본문 바로가기

golang37

golang cancel과 waitGroup 기초 이번 글에서는 여러개의 고루틴을 제어하는 기초방법들 중 하나를 소개하겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package main import ( "context" "fmt" "sync" ) func PrintNum(ctx context.Context, num int, wg *sync.WaitGroup) { defer wg.Done() // 고루틴이 끝났다고 알림 if ctx.Err() == context.Canceled { fmt.Println(num, " canceled") return } fmt.Println(num, "executed") } func main() { wg := &sync... 2021. 4. 11.
백준 단지번호 붙이기(Go) 문제 링크: www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 전형적인 BFS(DFS로도 풀이가능)문제입니다. 마지막에 정렬 후에 출력해야 하는 것에 주의해야합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59.. 2021. 4. 11.
golang signal과 context 기초 golang에서는 signal과 context를 이용하여 여러가지 제어를 할 수 있습니다. 먼저 signal 제어 방법을 알아볼건데 syscall.SIGINT 와 syscall.SIGTERM 을 알아보겠습니다. syscall.SIGINT는 ctrl+c 에 대한 시그널이고 syscall.SIGTERM은 종료에 대한 시그널입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package main import ( "fmt" "os" "os/signal" "syscall" ) func main() { cancelChan := make(chan os.Signal) signal.Notify(cancelChan, syscall.SIGINT, syscall.SIGT.. 2021. 4. 6.
백준 차이를 최대로 (Python/Go) 문제 링크: www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net N의 범위가 8이하로 작기 때문에 모든 순열을 구해서 풀면 되는 문제입니다. 아래는 파이썬 코드입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import sys from itertools import permutations def get_num(nums): tot = 0 for i in range(1, len(nums)): tot += abs(nums[i-1] - .. 2021. 4. 5.