๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿƒ algorithm/boj105

BOJ 4963 - ์„ฌ์˜ ๊ฐœ์ˆ˜ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 4963๋ฒˆ ํ’€์ด ๊ณผ์ • ์„ฌ๊ณผ ๋ฐ”๋‹ค์˜ ์ง€๋„๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ์„ฌ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. BFS ๋ฅผ ์ด์šฉํ•ด์„œ ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys from collections import deque dx = [1, -1, 0, 0, -1, -1, 1, 1] dy = [0, 0, 1, -1, -1, 1, -1, 1] def in_range(x, y): return 0 2021. 6. 15.
BOJ 5568 - ์นด๋“œ ๋†“๊ธฐ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 5568๋ฒˆ ํ’€์ด ๊ณผ์ • N ๊ฐœ์˜ ์นด๋“œ๋ญ‰์น˜์—์„œ K ๊ฐœ์˜ ์นด๋“œ๋ฅผ ๋ฝ‘์•„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ž…๋ ฅ ๊ฐ’์ด ํฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ˆ˜์—ด์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์ง‘ํ•ฉ์„ ์ด์šฉํ•ด์„œ ์ค‘๋ณต๋œ ๊ฐ’์„ ์ œ๊ฑฐํ•œ ๋’ค ์ด ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ from itertools import permutations def solution(): number_set = set() for candidate in permutations(cards, K): num = ''.join(map(str, candidate)) number_set.add(num) return len(number_set) if __name__ == '__main__': N = int(input()) K = .. 2021. 6. 14.
BOJ 5972 - ํƒ๋ฐฐ ๋ฐฐ์†ก ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 5972๋ฒˆ ํ’€์ด ๊ณผ์ • ํŠน์ • ์‹œ์ž‘ ์ง€์ ์—์„œ ๋ชฉํ‘œ ์ง€์ ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ตœ์†Œ ๋น„์šฉ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ์ด์šฉํ•ด์„œ ํ•œ ์ •์ ์—์„œ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๋น„์šฉ์„ ๊ตฌํ•˜๋ฉด ElogV ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys import heapq INF = 2e9 def dijkstra(frm, to): dist = [INF] * (N + 1) pq = [] dist[frm] = 0 heapq.heappush(pq, [0, frm]) while pq: cost, here = heapq.heappop(pq) if dist[here] < cost: continue for there, there_cost in graph[here]: next_cost = .. 2021. 6. 10.
BOJ 1613 - ์—ญ์‚ฌ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 1613๋ฒˆ ํ’€์ด ๊ณผ์ • ์—ญ์‚ฌ์˜ ํ•œ ์ง€์ ์„ ๊ทธ๋ž˜ํ”„์˜ ์ •์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ฉด ๊ฐ ์‚ฌ๊ฑด์˜ ์ „ํ›„ ๊ด€๊ณ„๋Š” ์ •์ ์˜ ๋„๋‹ฌ์„ฑ ๋ฌธ์ œ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ •์ ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๊ฐ€ 400๊ฐœ ์ดํ•˜์ด๋ฏ€๋กœ O(N^3) ์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ •์ ๊ฐ„์˜ ๋„๋‹ฌ์„ฑ ์—ฌ๋ถ€๋ฅผ ๊ณ„์‚ฐํ•ด์ค€ ๋’ค, ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง€๋Š” ์ž…๋ ฅ์˜ ์ „ํ›„ ๊ด€๊ณ„๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ Python3 ์˜ ์†๋„ ํ•œ๊ณ„๋กœ ์ธํ•ด PyPy๋กœ ์ œ์ถœํ•ด์•ผ ์‹œ๊ฐ„์ œํ•œ ์ด๋‚ด์— ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys n, k = list(map(int, sys.stdin.readline().split())) adj = [[0]*n for _ in range(n)] for _ in range(k): f.. 2021. 6. 9.
BOJ 5014 - ์Šคํƒ€ํŠธ๋งํฌ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 5014๋ฒˆ ํ’€์ด ๊ณผ์ • ๊ฑด๋ฌผ์˜ ์‹œ์ž‘ ์ธต๊ณผ ๋ชฉํ‘œ ์ธต์ด ์ฃผ์–ด์กŒ์œผ๋ฏ€๋กœ BFS ํƒ์ƒ‰์„ ํ†ตํ•ด ๋ชฉํ‘œ ์ง€์ ์— ๋„๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ธต์ด ๊ฑด๋ฌผ์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๋งŒ ์ฃผ์˜ํ•œ๋‹ค๋ฉด ๋ฌด๋‚œํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys from collections import deque F, S, G, U, D = list(map(int, sys.stdin.readline().split())) def bfs(start): visit = [0 for _ in range(F+1)] q = deque() visit[start] = 1 q.append((start, 0)) while q: here, cost = q.popleft() if here == G: return cost fo.. 2021. 6. 9.
BOJ 1389 - ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ 6๋‹จ๊ณ„ ๋ฒ•์น™ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 1389๋ฒˆ ํ’€์ด ๊ณผ์ • ์ฐฌ๊ตฌ ๊ด€๊ณ„๋ฅผ ๊ทธ๋ž˜ํ”„๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๊ฐ€ ํ•œ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ์˜ ํ•ฉ์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํ™œ์šฉํ•ด ๋ชจ๋“  ์ •์ ๊ฐ„์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•œ ๋’ค ์ผ€๋นˆ ๋ฒ ์ด์ปจ์˜ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ์‚ฌ๋žŒ์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys N, M = list(map(int, sys.stdin.readline().split())) adj = [[sys.maxsize] * N for _ in range(N)] for _ in range(M): frm, to = list(map(int, sys.stdin.readline().split())) adj[frm-1][to-1] = 1 adj[to-1][fr.. 2021. 6. 9.