📺 시리즈 2023.10.02 - [Go/디자인 패턴] - [Go] SOLID in Go - SOLID란? 2023.10.03 - [Go/디자인 패턴] - [Go] SOLID in Go - 구조체와 메서드 2023.10.04 - [Go/디자인 패턴] - [Go] SOLID in Go - 인터페이스 2023.10.09 - [Go/디자인 패턴] - [Go] SOLID in Go - 컴포지션 2023.10.10 - [Go/디자인 패턴] - [Go] SOLID in Go - 패키지 2023.10.11 - [Go/디자인 패턴] - [Go] SOLID in Go - 단일 책임 원칙 2023.10.12 - [Go/디자인 패턴] - [Go] SOLID in Go - 개방 폐쇄 원칙 🎭 리스코프 치환 원칙 (Liskov..
문제 4134번: 다음 소수 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. www.acmicpc.net 정수 n(0 ≤ n ≤ 4*109)가 주어졌을 때, n보다 크거나 같은 소수 중 가장 작은 소수 찾는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. 출력 각각의 테스트 케이스에 대해서 n보다 크거나 같은 소수 중 가장 작은 소수를 한 줄에 하나씩 출력한다. 문제 이해하기 소수는 1과 자기 자신만을 약수로가지는 수입니다. 따라서 정수 n이 주어졌을 때 2 ≤ i ≤ (n-1)인 정수 i 중 어떤 것으로든 n을 0으로 나누어 떨어지게 만들 수 있다면 ..
📡 프로토콜 버퍼 (Protocol Buffers) 프로토콜 버퍼는 구조화된 데이터를 직렬화하는 방식으로, 구글에서 개발하으며 gRPC에서 데이터를 주고받기 위해 기본으로 사용되는 방식입니다. 프로토콜 버퍼는 다음과 같은 주요 특징을 가지고 있습니다. 효율적인 이진 직렬화: 다른 형식(XML 또는 JSON)에 비해 더 작은 데이터 크기로 더 빠른 데이터 전송 및 저장이 가능합니다. 스키마 정의: '.proto' 파일을 사용하여 프로토콜 버퍼 메시지를 스키마로 정의할 수 있습니다. 다양한 언어 지원: 현재 프로토콜 버퍼는 C++, Java, Python, Go 등 총 11개 언어로의 컴파일을 지원하고 있습니다. 업데이트 및 상호 호환성: 데이터 스키마에 새 필드를 추가하거나 수정 또는 제거하는 업데이트가 ..
📺 시리즈 2023.10.02 - [Go/디자인 패턴] - [Go] SOLID in Go - SOLID란? 2023.10.03 - [Go/디자인 패턴] - [Go] SOLID in Go - 구조체와 메서드 2023.10.04 - [Go/디자인 패턴] - [Go] SOLID in Go - 인터페이스 2023.10.09 - [Go/디자인 패턴] - [Go] SOLID in Go - 컴포지션 2023.10.10 - [Go/디자인 패턴] - [Go] SOLID in Go - 패키지 2023.10.11 - [Go/디자인 패턴] - [Go] SOLID in Go - 단일 책임 원칙 🚪 개방-폐쇄 원칙 (Open-Closed Principle) 확장에는 열려 있고, 변경에는 닫혀 있다. 개방-폐쇄 원칙은 상호 결합도..
문제 14490번: 백대열 n과 m이 :을 사이에 두고 주어진다. (1 ≤ n, m ≤ 100,000,000) www.acmicpc.net 대열이는 욱제의 친구다. “야 백대열을 약분하면 뭔지 알아?” “??” “십대일이야~ 하하!” n:m이 주어진다. 욱제를 도와주자. (...) 문제 이해하기 n과 m의 최대공약수 g로 n과 m을 나눠주면 두 수를 최대한 약분할 수 있습니다. 코드 package main import ( "bufio" "bytes" "fmt" "os" "strconv" ) var ( scanner = bufio.NewScanner(os.Stdin) writer = bufio.NewWriter(os.Stdout) input []byte ) func main() { defer writer...
💻 gRPC gRPC는 어떤 환경에서도 실행되는 고성능 RPC(Remote Procedure Call) 프레임워크입니다. RPC(Remote Procedure Call): 마치 로컬 프로시저를 호출하는 것처럼 원격 시스템에 있는 함수 또는 프로시저를 호출할 수 있게 해주는 프로세스 간 통신 기술 gRPC를 사용하면 클라이언트 애플리케이션은 로컬에서 메서드를 호출하는 것처럼 다른 머신에 있는 서버 애플리케이션에 있는 메서드를 직접 호출할 수 있습니다. 그 덕분에 분산 애플리케이션과 서비스를 구축하는 것이 한결 수월해집니다. 대다수의 RPC 시스템과 마찬가지로 gRPC는 파라미터와 반환 타입을 가지는 메서드를 명시함으로써 서비스를 정의합니다. 서버는 서비스에 정의된 인터페이스를 구현하고, gRPC 서버를 실..
📺 시리즈 2023.10.02 - [Go/디자인 패턴] - [Go] SOLID in Go - SOLID란? 2023.10.03 - [Go/디자인 패턴] - [Go] SOLID in Go - 구조체와 메서드 2023.10.04 - [Go/디자인 패턴] - [Go] SOLID in Go - 인터페이스 2023.10.09 - [Go/디자인 패턴] - [Go] SOLID in Go - 컴포지션 2023.10.10 - [Go/디자인 패턴] - [Go] SOLID in Go - 패키지 ☝ 단일 책임 원칙 (Single Responsibility Principle) 모든 객체는 하나의 책임만을 져야 한다. 단일 책임 원칙은 객체가 단일 책임 또는 역할에 집중하도록 유도함으로써 소프트웨어를 더 쉽게 이해하고 유지보수할..
문제 13909번: 창문 닫기 첫 번째 줄에는 창문의 개수와 사람의 수 N(1 ≤ N ≤ 2,100,000,000)이 주어진다. www.acmicpc.net 서강대학교 컴퓨터공학과 실습실 R912호에는 현재 N개의 창문이 있고 또 N명의 사람이 있다. 1번째 사람은 1의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다. 2번째 사람은 2의 배수 번째 창문을 열려 있으면 닫고 닫혀 있으면 연다. 이러한 행동을 N번째 사람까지 진행한 후 열려 있는 창문의 개수를 구하라. 단, 처음에 모든 창문은 닫혀 있다. 예를 들어 현재 3개의 창문이 있고 3명의 사람이 있을 때, 1번째 사람은 1의 배수인 1,2,3번 창문을 연다. (1, 1, 1) 2번째 사람은 2의 배수인 2번 창문을 닫는다. (1, 0, 1)..
📺 시리즈 2023.10.02 - [Go/디자인 패턴] - [Go] SOLID in Go - SOLID란? 2023.10.03 - [Go/디자인 패턴] - [Go] SOLID in Go - 구조체와 메서드 2023.10.04 - [Go/디자인 패턴] - [Go] SOLID in Go - 인터페이스 2023.10.09 - [Go/디자인 패턴] - [Go] SOLID in Go - 컴포지션 🎁 패키지 Go의 패키지는 다른 프로그래밍 언어에서의 라이브러리나 모듈의 개념으로, '.go' 접미사를 가진 연관된 코드들을 디렉터리 단위로 모아 코드의 재사용성을 높이는 중요한 개념입니다. 패키지 선언 파일의 맨 위에 'package' 키워드를 사용하여 패키지를 선언합니다. 예를 들어, 'package main'은 메인..
📺 시리즈 2023.10.02 - [Go/디자인 패턴] - [Go] SOLID in Go - SOLID란? 2023.10.03 - [Go/디자인 패턴] - [Go] SOLID in Go - 구조체와 메서드 2023.10.04 - [Go/디자인 패턴] - [Go] SOLID in Go - 인터페이스 🔗 컴포지션 Go는 상속을 지원하지 않습니다. 대신 구조체 안에 구조체 또는 인터페이스를 임베딩하는 컴포지션을 사용합니다. 인터페이스 또는 구조체에 다른 타입을 임베딩할 수 있게 함으로써 임베딩된 내부 타입의 메서드를 외부 타입이 차용할 수 있습니다. 구조체 임베딩 해적단에는 먼저 선원(Crew)이 있습니다. 선원들은 저마다 이름(Name)을 가지고 있습니다. 그리고 뱃노래를 부를(SingShanty) 수도 있..