Go Lang

개요백준의 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. 사용자 지정 패키지란? 프로젝트 디렉터리 아래에 라이브러리 파일이 있는 디..
· Go Lang
🔍 문제 톺아보기 https://www.acmicpc.net/problem/1019 1,000,000,000보다 작거나 같은 N이 주어질 때 1 ~ N까지의 페이지 번호에서 0~9가 몇 번 나오는지 구해보자 백준에서는 1초당 1억을 넘어가면 시간초과를 하게 됩니다 하지만 문제는 10억이기에 당연히 반복문으로 모든 경우의 수를 체크하는 방법은 시간초과가 발생합니다. 🔍규칙 찾기 시간초과가 발생함은 곧 규칙이 있고 이거를 찾으면 해결할 수 있다는 의미죠 저 10억 자리의 수를 무언가 하려면 수로 접근하는 게 아닌 문자열로 접근해야 합니다 다가가기 1 일단 1부터 99는 구할 수 있을까? 💡어디 보자 십의 자리만 두고 생각하면 1~9가 10번 반복되고 (각 십의 자릿수는 일자리가 9까지 돌기 때문에) 일의 자..
개요 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은 키를 비교한 회수이다. 다음..
개요 https://www.acmicpc.net/problem/1004 1004번: 어린 왕자 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 첫째 줄에 출발점 (x1, y1)과 도착점 (x2, y2)이 주어진다. 두 번째 줄에는 행성계의 개수 n이 주 www.acmicpc.net 처음 이 문제를 보고 골치가 아플 것 같았는데 유심히 보니 정답률이 높아서 계속 문제를 읽었더니 이 문제는 낚시가 있어서 이 부분만 안 속으면 매우 쉽습니다. 문제가 아래처럼 주어진다면 뭔가 아래처럼원 사이를 구불구불 지나가야 제대로 푼 거 같은 기분이 들지만 사실 아래처럼 간단하게 뒤로 돌아간다는 경우의 수가 항상 존재합니다! 즉 문제에서 말한 행성의 경계에 진입/이탈하는 경..
개요 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 📃 해당 문제는 위상 정렬로 해결할 수 있습니다. 이를 알 수 있는 이유는 키를 비교하는 것이기에 만약 1번이 2번보다 작다, 2번은 3번보다 작다 근데 3번이 1번 보다 작다와 같이 순환되지 않는다는 걸 의미합니다 거기에 문제에서 답이 여러 가지인 경우 아무거나 출력한다고 말했으니 그 말은 비교했을 때 순서가 동일한 게 생긴다는 의미입니다. 이걸로..
개요 https://www.acmicpc.net/problem/1009 1009번: 분산처리 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주어진다. (1 ≤ a < 100, 1 ≤ b < 1,000,000) www.acmicpc.net 이 문제는 제곱수는 구하는 문제라 쉽게 자료형의 한계 값을 넘어버릴 수 있습니다. 이를 대처하기 위해선 제곱 수의 일의 자리의 특성을 알면 좋습니다. 제곱 수의 1의 자리는 4번 주기로 반복됩니다. 수학적으로 증명하기에는 너무 복잡하기에 "그렇구나" 정도로 알아두는 게 좋습니다. 이를 이용하면 문제에서 입력되는 b를 최소화할 수 있습니다. 코드 package main import ( "bufio" "f..
개요 https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 우선 문제 이름처럼 DFS, BFS를 알아야 합니다. DFS (Depth-First Search), 깊이 우선 탐색 그래프의 모든 정점을 탐색하는 방법으로 최대한 깊이 탐색을 한 후 더 이상 깊이 들어가지 못한다면 이전으로 돌아와 다른 진행 방향으로 깊이 탐색을 진행합니다. 노드들을 돌며 순서를 스택(재귀)에 쌓는 방식을 사용합니다. 아래처럼 끝까지 가보..
DSeung
'Go Lang' 카테고리의 글 목록