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

๐Ÿƒ algorithm/boj105

BOJ 9094 - ์ˆ˜ํ•™์  ํ˜ธ๊ธฐ์‹ฌ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 9094๋ฒˆ ํ’€์ด ๊ณผ์ • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์„ ๋งŒ๋“ค์–ด๋ณธ ๋‹ค์Œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์กฐํ•ฉ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ์— a ์™€ b ์˜ ์กฐํ•ฉ์˜ ๊ฐœ์ˆ˜๊ฐ€ 10000๊ฐœ๋ฅผ ๋„˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœ ์กฐํ•ฉ๊ฐœ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‹œ๋„ํ–ˆ๋Š”๋ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ๋ชปํ•ด์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด a, b, m ์„ ์ƒํƒœ๋ณ€์ˆ˜๋กœ ํ•˜๋Š” ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์ ์šฉํ•ด์„œ ์ค‘๋ณต๋œ ๊ณ„์‚ฐ์„ ์ค„์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys def solution(): ret = 0 for a in range(1, n): for b in range(a + 1, n): if memo[a][b][m] != -1: ret += memo[a][b][m] continue numerator, deno.. 2021. 9. 12.
BOJ 5076 - Web Pages ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 5076๋ฒˆ ํ’€์ด ๊ณผ์ • HTML ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„์„œ ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ์œ ํšจํ•œ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์—ด๋ฆฐ ํƒœ๊ทธ์™€ ๋‹ซํžŒ ํƒœ๊ทธ๋Š” ์„œ๋กœ ์Œ์„ ์ด๋ฃจ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— (self-closing ํƒœ๊ทธ ์ œ์™ธ) ์Šคํƒ ์„ ์ด์šฉํ•ด์„œ ์œ ํšจ์„ฑ์„ ํŒ๋‹จํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์—์„œ ํƒœ๊ทธ๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์‹ฑํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํƒœ๊ทธ ์ •๋ณด๋Š” ํƒœ๊ทธ ์ด๋ฆ„, ํƒœ๊ทธ ํƒ€์ž… ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys def parse_tag(html): parsed_tags = [] start_parsing = False tag_name = '' tag_type = '' for idx in range(len(html)): if html[idx] == '': tag.. 2021. 7. 19.
BOJ 1920 - ์ˆ˜ ์ฐพ๊ธฐ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 1920๋ฒˆ ํ’€์ด ๊ณผ์ • ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์—์„œ ํŠน์ • ์ˆ˜๋“ค์ด ์กด์žฌํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ ์ฐพ๋Š” ์ˆ˜๋“ค์ด ๊ฐ๊ฐ ์ตœ๋Œ€ 10๋งŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒ€์ƒ‰์šฉ ๋ฐฐ์—ด์„ ๋ฏธ๋ฆฌ ์ •๋ ฌํ•œ ๋’ค์— ์ด๋ถ„ ํƒ์ƒ‰ ์„ ์ด์šฉํ•ด์„œ O(MlogN) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys def find(arr, target): lo, hi = 0, len(arr) - 1 while lo 2021. 7. 5.
BOJ 13700 - ์™„์ „ ๋ฒ”์ฃ„ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 13700๋ฒˆ ํ’€์ด ๊ณผ์ • ์‹œ์ž‘ ์ง€์ ์—์„œ ๋ชฉํ‘œ ์ง€์ ์— ๋„๋‹ฌํ•˜๋Š” ์ตœ์†Œ ์ด๋™ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ฌธ์ œ ์กฐ๊ฑด์—์„œ ๊ฒฝ์ฐฐ์„œ์— ์ค‘๊ฐ„์— ๋ฐฉ๋ฌธํ•˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์กฐ๊ฑด์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— BFS ๋ฅผ ์ด์šฉํ•˜์—ฌ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๊ฒฝ์ฐฐ์„œ ์ง€์ ์„ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ ํ•ด์ค€ ๋’ค ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•ด์ค๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys from collections import deque INF = 2e9 def bfs(start, goal): q = deque() visit = [0] * (N + 1) q.append([start, 0]) visit[start] = 1 for office in police_office: visit[office] = 1 while q: here, click = q.popleft() i.. 2021. 6. 29.
BOJ 14950 - ์ •๋ณต์ž ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 1๋ฒˆ ํ’€์ด ๊ณผ์ • ๋ชจ๋“  ์ •์ ์„ ์ž‡๋Š” ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํ™œ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๊ฐ ๊ฒฝ๋กœ๋ฅผ ์„ ํƒํ• ๋•Œ๋งˆ๋‹ค ๋ชจ๋“  ๊ฐ„์„ ์˜ ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— t * ์ด์ „๊นŒ์ง€ ์„ ํƒ๋œ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ์ถ”๊ฐ€์ ์ธ ๊ฐ’์„ ๋ˆ„์ ํ•ด์ค๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys def union(u, v): pv, pu = find(u), find(v) if pv != pu: if rank[pv] > rank[pu]: parent[pu] = pv else: if rank[pv] == rank[pu]: rank[pu] += 1 parent[pv] = pu def find(u): if parent[u] == u: return u paren.. 2021. 6. 25.
BOJ 1197 - ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 1197๋ฒˆ ํ’€์ด ๊ณผ์ • ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„๋„๋กœ ๋ณต์žกํ•œ ๋กœ์ง์ด ์ถ”๊ฐ€๋˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์˜ค๋žœ๋งŒ์— MST ๋ฌธ์ œ๋ฅผ ํ•œ๋ฒˆ ํ’€์–ด๋ณด๊ณ  ์‹ถ์–ด์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ•œ๋ฒˆ ํ’€์–ด๋ดค์Šต๋‹ˆ๋‹ค. ๐Ÿ˜„ ์ฝ”๋“œ import sys def union(u, v): pu, pv = find(u), find(v) if pu != pv: if rank[pu] > rank[pv]: parent[pv] = pu else: parent[pu] = pv if rank[pu] == rank[pv]: rank[pv] += 1 def find(u): if parent[u] == u: return u parent[u] = find(parent[u]) return parent[u] de.. 2021. 6. 18.