본문 바로가기

golang37

Golang network TCP hello world 예제 이번 글에서는 TCP서버를 열고 거기에 접속하는 사용자에게 "Hello TCP"라는 문자열을 return 해준 후에 connection을 닫는 간단한 프로그램을 만들어보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package main import ( "io" "log" "net" ) func main() { li, err := net.Listen("tcp", "127.0.0.1:8080") if err != nil { log.Panic(err) } defer li.Close() for { conn, err := li.Accept() if err != nil { log.Println(err) } io.WriteString(co.. 2021. 4. 5.
golang에서 heap 사용하기 파이썬 같은 언어는 기본으로 내장되어 있는 heapq가 사용하기 상당히 쉽고 편리한데에 비해 go에서 heap을 사용하려면 꽤나 복잡한 작업을 해야합니다. 이번 글에서는 go에서 heap을 어떻게 사용하는지 공식문서예제에 있는 코드로 알아보겠습니다. 공식문서의 예제 링크: golang.org/src/container/heap/example_pq_test.go 1 func Pop(h Interface) interface{} cs go의 container/heap의 Pop 함수입니다. 인자로 Interface type을 받아야 합니다. 1 2 3 4 5 type Interface interface { sort.Interface Push(x interface{}) Pop() interface{} } cs In.. 2021. 4. 3.
백준 가장 긴 증가하는 부분 수열4 (Python/Go) 문제 링크: www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net LIS 문제인데 단순 개수만 구하는게 아닌 어떤 원소들로 이루어져있는지도 출력해야하는 문제입니다. 기본적인 LIS 코드는 아래와 같습니다. dp를 0이 아닌 1로 초기화하는 것에 주의해야합니다. 자기 자신을 포함하기 때문에 1로 초기화 해야합니다. 1 2 3 4 5 6 7 8 9 10 11 12 n = int(inpu.. 2021. 4. 1.
백준 욕심쟁이판다 (Python/Go) 문제 링크: www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 www.acmicpc.net 단순히 bfs로 완전탐색하면 시간초과가 나기 때문에 dfs+dp로 풀어야하는 난이도 있는 문제입니다. 핵심은 2차원 dp를 만들어서 dp에 0이 아닌 값이 있다면 탐색을 그만하고 그 값을 사용하면 됩니다. 예를 들어 (2, 2)에서 출발하였고 위로 1칸 갔다고 가정해본다면 (1, 2) 좌표입니다. dp[1][2] = 3 이런식으로 값이 저장되어 있다면 더 이상 탐색을 그만하고 3 + 1 값.. 2021. 3. 31.