추상 팩토리 디자인 패턴추상 팩토리 디자인을 사용해 보겠습니다.아마 여러분이 디자인 패턴을 한 번이라도 봤다면 이 패턴을 가장 처음 보게 될 텐데이게 디자인 패턴 중 가장 친근할 겁니다. 요약하자면 일정한 패턴을 가진 객체들을 자주 사용할 때공통된 함수나 변수로 묶어서 인터페이스를 만들고, 이 인터페이스를 잘 활용을 하는 방법입니다. 이걸 구현하는 하위 객체들을 사용하는, 호출 부에서는 객체 하나하나의 생성을 로직을 몰라도 바로 쓸 수 있습니다.이로써 객체 생성의 추상화가 구현됨으로써 유연성과 확장성을 높여 줍니다. 개념추상화라는 말이 들어가는 걸로, 알 수 있듯이 객체 지향 언어에서 인터페이스를 사용해서 주로 구현합니다.여러 객체를 생성하기 위해 이들을 묶는 상위 개념의 인터페이스 제공각 객체는 Fac..
Go Lang
ScoopWindow 용 경량 패키지 관리 도구 리눅스의 apt, 맥의 brew와 같이 소프트웨어 설치와 관리를 해줍니다. 장점 간단한 설치: 소프트웨어 설치가 매우 직관적버전 관리: 다양한 소프트웨어의 버전을 쉽게 전환의존성 관리: 필요한 의존성도 자동으로 처리환경 변수 자동 관리: 프로그램 설치 시 환경 변수를 자동으로 설정설치하는 법window powershell에서 아래 명령어로 설치가 가능합니다.Set-ExecutionPolicy RemoteSigned -Scope CurrentUserirm get.scoop.sh | iex 아래처럼 scoop --version 했을 때 성공하면 설치가 완료된 것입니다. Scoop으로 Go 버전 관리아래처럼 최신 버전을 다운로드할 수 있고scoop install..
미분 이론미분을 학교에서 배우지 않은 사람으로서 해당 문제를 풀 때 어떻게 미분을 이해해서 풀었는 지를 정리해보겠습니다 미분은 위키에서 다음처럼 찾을 수 있는데미분(한국 한자: 微分, 영어: derivative) 또는 도함수(한국 한자: 導函數)는 어떤 함수의 정의역 속 각 점에서 함숫값의 변화량과 독립 변숫값의 변화량 비의 극한 혹은 극한들로 치역이 구성되는 새로운 함수다.어떤 함수의 순간 변화율 (미분계수)을 구하는 것을 의미하며 순간변화율은 독립 변수 x의 증분에 관한 함숫값 ƒ(x)의 증분의 비가 한없이 일정한 값에 가까워질 때 그 일정한 값, 즉 함수에서 변수 x값의 변화량에 관한 함숫값 ƒ(x)의 변화량 비가 한없이 일정한 값에 가까워질 때 그 일정한 값 dy/dx로 나타낸다. 이런 건 솔직히..
개요https://www.acmicpc.net/problem/1027백준의 고층 건물 문제를 풀어봅시다 문제를 정리하면 다음과 같습니다. 단위가 1인 직성상에 건물이 50보다 작거나 같은 수로 주어지고 이는 차례대로 세워지는데이 건물들의 높이는 1,000,000,000보다 작다.이때 한 빌딩에서 올라갔을 때 가장 많은 빌딩이 보이는 수는 몇 개인가? 이때 빌딩이 보인다는 개념은 단순히 건물의 높이가 높다고 보이는 게 아니고 한 빌딩에서 보는 시각을 기준하기에 이를 풀기 위해서는 단순한 높이차가 아닌 보이는 시각즉 현재 빌딩과 바라볼 빌딩의 간의 기울기를 기준으로 문제를 다가가야 합니다. 기울기 공식은 다음과 같습니다기울기 = y의 증가량/x의 증가량 기울기를 베이스로 문제를 풀면 다음과 같은 그림이 ..
개요백준의 1012번 문제를 풀어봅시다, 문제는 다 알고 계시겠지만 링크는 아래와 같습니다https://www.acmicpc.net/problem/1012요약하자면 x,y로 된 배추 밭에 값이 1로 묶인 묶음 하나당 배추흰지렁이가 한마리가 필요하다면 전체 밭에서 필요한 배추흰지렁이의 최소 수는?조건에 묶음이란 상하좌우가 이어진게 한 묶음으로 봅니다 즉 아래 그림은 총 5마리가 필요한 걸 알 수 있습니다. 다가가기처음에 문제를 보고 가장 먼저 떠오른 생각은 왼쪽 위 부터 차례대로 오른쪽 아래로 내려오니깐현재 좌표에서 오른쪽, 아래 값만을 체크하면서 내려오면 되지 않을까라는 생각을 가장 먼저 해봤는데 아래와 같은 배추 밭에서는 에서는 아래 처럼 왼쪽와 아래에 1이 있을 경우 소거법으로 진행할 경우 성공적으..
GraphQL이 뭔지 궁금하다면 다음 주소를 참고 ㄱㄱ https://seung.tistory.com/entry/GraphQL%EC%9D%B4-%EB%AD%94%EC%A7%80-%EC%95%8C%EC%95%84%EB%B3%BC%EA%B9%8C Go에서는 GraphQL을 지원하는 라이브러리는 참 많던데 주로 쓰이는 건 아래와 같다 99designs/gqlgen: https://github.com/99designs/gqlgen graphql-go/graphql: https://github.com/graphql-go/graphql graph-gophers/graphql-go: https://github.com/graph-gophers/graphql-go 뭘 할까.. 대충 아래 목록을 기준으로 고르도록 했다 해..
1. Go가 뭐라고 생각해요? Go는 요즘 같은 시대에 딱 적합한 언어라고 생각합니다 빠르게 컴파일링 가능하고, 복잡함을 최소화했으며 문법도 간단하고 경량 스레드를 가진 데다가 C와 라이브러리와 네이티브 시스템 호출 등 상호운용성도 챙겼기에 매우 좋은 언어라 생각합니다. 2. Go 프로그램의 패키지를 설명해 주세요? 패키지란 비슷한 기능을 가진 함수, 타입, 변수들이 집합으로 패키지는 코드의 구조를 조직화하고 네임스페이스를 제공하는 역할을 합니다. GO는 패키지로 구성되며 main 패키지에서 실행됩니다. go mod init : 모듈을 초기화합니다. go get : 외부 모를 가져옵니다. go build : 코드를 빌드합니다 3. 사용자 지정 패키지란? 프로젝트 디렉터리 아래에 라이브러리 파일이 있는 디..
🔍 문제 톺아보기https://www.acmicpc.net/problem/10191,000,000,000보다 작거나 같은 N이 주어질 때 1 ~ N까지의 페이지 번호에서 0~9가 몇 번 나오는지 구해보자 백준에서는 1초당 1억을 넘어가면 시간초과를 하게 됩니다하지만 문제는 10억이기에 당연히 반복문으로 모든 경우의 수를 체크하는 방법은 시간초과가 발생합니다. 🔍규칙 찾기시간초과가 발생함은 곧 규칙이 있고 이거를 찾으면 해결할 수 있다는 의미죠저 10억 자리의 수를 무언가 하려면 수로 접근하는 게 아닌 문자열로 접근해야 합니다 다가가기 1일단 1부터 99는 구할 수 있을까?💡어디 보자 십의 자리만 두고 생각하면 1~9가 10번 반복되고 (각 십의 자릿수는 일자리가 9까지 돌기 때문에)일의 자리는 1부..
개요 https://www.acmicpc.net/problem/1007 1007번: 벡터 매칭 평면 상에 N개의 점이 찍혀있고, 그 점을 집합 P라고 하자. 집합 P의 벡터 매칭은 벡터의 집합인데, 모든 벡터는 집합 P의 한 점에서 시작해서, 또 다른 점에서 끝나는 벡터의 집합이다. 또, P에 속 www.acmicpc.net 문제는 다음과 같습니다. 평면에 점들의 집합인 P가 있고 여기에는 N개의 좌표가 있다, N은 짝수이다. 집합 P에서 N개의 벡터를 만들 수 있다, 즉 벡터는 N/2개이다. P에서 나오는 벡터들의 합 중 최솟값을 출력해라. 이 문제를 풀려면 우선 🔍벡터의 합은 어떻게 구하는가? 벡터의 값은 끝점 - 시작점으로 구할 수 있습니다. 벡터 v1는 x1, y2에서 x2, y2로 향한다 v1 ..
개요 문제 https://www.acmicpc.net/problem/1005 📃 해당 문제는 이전에 풀었던 위상 정렬 문제인 2252번을 이용하시면 쉽게 이해할 수 있습니다. https://seung.tistory.com/entry/GoLang-%EB%B0%B1%EC%A4%80-2252%EB%B2%88-%EC%A4%84-%EC%84%B8%EC%9A%B0%EA%B8%B0%EC%9C%84%EC%83%81%EC%A0%80%EB%A0%AC [GoLang] 백준 2252번, 줄 세우기(위상 정렬) 개요 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음..