๐ 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. ์ด์ 1 2 3 4 ยทยทยท 18 ๋ค์