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

๐Ÿƒ algorithm/boj105

BOJ 2644 - ์ดŒ์ˆ˜๊ณ„์‚ฐ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 2644๋ฒˆ ํ’€์ด ๊ณผ์ • ๋ฌธ์ œ ์กฐ๊ฑด์„ ํ†ตํ•ด ๊ฐ ์ž์‹์€ ์˜ค์ง ํ•˜๋‚˜์˜ ๋ถ€๋ชจ๋งŒ ์ฃผ์–ด์ง€๋ฏ€๋กœ ์‚ฌ์ดํด ์—†๋Š” ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ดŒ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์‹ถ์€ ๋‘ ์‚ฌ๋žŒ์ค‘ ์ž„์˜๋กœ ํ•œ๋ช…์„ ์„ ํƒํ•œ ๋’ค ๋‹ค๋ฅธ ํ•œ๋ช…์— ๋„๋‹ฌํ•˜๋Š” ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ„์‚ฐํ•˜๋ฉด ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ, ๋„๋‹ฌ ๊ฐ€๋Šฅ์„ฑ ์œ ๋ฌด๋Š” DFS ๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐ๋œ ๊ฑฐ๋ฆฌ๊ฐ’์„ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys n = int(input()) target = list(map(int, sys.stdin.readline().split())) m = int(input()) adj = [[] for _ in range(n+1)] for _ in range(m): frm, to = list(map(int, sys.stdin.re.. 2021. 6. 9.
BOJ 10026 - ์ ๋ก์ƒ‰์•ฝ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 10026๋ฒˆ ํ’€์ด ๊ณผ์ • ์ž…๋ ฅ๋œ board ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ์ง€ ์•Š์œผ๋ฏ€๋กœ DFS ํƒ์ƒ‰์„ ํ†ตํ•ด ๋ชจ๋“  ๊ตฌ๊ฐ„์„ ์ฐพ์•„์คฌ์Šต๋‹ˆ๋‹ค. ์ƒ‰๋งน์ด ์žˆ๋Š” ์‚ฌ๋žŒ๊ณผ ์—†๋Š” ์‚ฌ๋žŒ์€ ํƒ์ƒ‰ ์ œ์•ฝ์กฐ๊ฑด์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ๊ฐ visit ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๋”ฐ๋กœ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. 2๋ฒˆ์˜ DFS ๋ฅผ ์ˆ˜ํ–‰ํ•ด๋„ ์ด ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(2n) ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋‚ด์— ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys sys.setrecursionlimit(10**6) N = int(input()) board = [] for _ in range(N): board.append(list(sys.stdin.readline()[:-1])) dx = [0, 0, 1, -1] dy = [1, -1, 0, 0] def dfs(x, y, visit, d.. 2021. 6. 9.
BOJ 3135 - ๋ผ๋””์˜ค ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 3135๋ฒˆ ํ’€์ด ๊ณผ์ • ๋ผ๋””์˜ค์˜ ์„ธ ๊ฐ€์ง€ ๋ฒ„ํŠผ์„ ์ด์šฉํ•ด์„œ ๋ชฉํ‘œ ์ฃผํŒŒ์ˆ˜์— ๋„๋‹ฌํ•˜๋„๋ก ํ•˜๋Š” ์ตœ์†Œ ๋ฒ„ํŠผ ์ž…๋ ฅ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ฃผํŒŒ์ˆ˜์˜ ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์ง€์ ์ด ์„œ๋กœ ์ด์–ด์ ธ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•˜๊ฒŒ ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ชฉ๋ก๋“ค์˜ ์ฃผํŒŒ์ˆ˜๋“ค๊ณผ์˜ ์ฐจ์ด๊ฐ’๊ณผ A ์—์„œ B ๊นŒ์ง€์˜ ์ฐจ์ด๊ฐ’ ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์„ ์ฐพ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys def solution(): min_value = 2e9 for freq in frequency: min_value = min(min_value, abs(freq - B)) return min(min_value + 1, abs(A - B)) if __name__ == '__main__': A, B = list(map(int, sys.stdin.r.. 2021. 6. 9.
BOJ 13410 - ๊ฑฐ๊พธ๋กœ ๊ตฌ๊ตฌ๋‹จ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 13410๋ฒˆ ํ’€์ด ๊ณผ์ • ๊ตฌ๊ตฌ๋‹จ์„ ์ˆ˜ํ–‰ํ•˜๋˜ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋’ค์ง‘์—ˆ์„ ๋•Œ์˜ ์ตœ๋Œ€ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์š”๊ตฌ์กฐ๊ฑด์ด ๋ณต์žกํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅ๊ฐ’๋„ ํฌ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ ํƒ์ƒ‰์„ ํ†ตํ•ด ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys def solution(N, K): max_value = 0 for i in range(1, K + 1): num = str(N * i)[::-1] max_value = max(max_value, int(num)) return max_value if __name__ == '__main__': N, K = list(map(int, sys.stdin.readline().split())) answer = solution(N, K) print(answer) 2021. 6. 8.
BOJ 2252 - ์ค„ ์„ธ์šฐ๊ธฐ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 2252๋ฒˆ ํ’€์ด ๊ณผ์ • ์œ„์ƒ ์ •๋ ฌ ์„ ํ™œ์šฉํ•œ ํ•ด๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ DFS ๋ฅผ ํ™œ์šฉํ•ด ์œ„์ƒ ์ •๋ ฌ ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊ฐ„๋‹จํ•ด์„œ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys n, m = list(map(int, sys.stdin.readline().split())) adj = [[] for _ in range(n+1)] for _ in range(m): frm, to = list(map(int, sys.stdin.readline().split())) adj[frm].append(to) def dfs(here, visit, ans): visit[here] = 1 for there in adj[here]: if not visit[there]:.. 2021. 6. 7.
BOJ 2231 - ๋ถ„ํ•ดํ•ฉ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 2231๋ฒˆ ํ’€์ด ๊ณผ์ • ์–ด๋–ค ๋ถ„ํ•ดํ•ฉ ๊ฒฐ๊ณผ๊ฐ€ ์ž์—ฐ์ˆ˜ N์ผ๋•Œ ์ด์— ๋Œ€ํ•œ ์ƒ์„ฑ์ž๋Š” N๋ณด๋‹ค ์ ˆ๋Œ€ ํด ์ˆ˜ ์—†๋‹ค๋Š” ์ ์„ ์ด์šฉํ•ด ๋ธŒ๋ฃจํŠธ ํฌ์Šค๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ•œ ์ž์—ฐ์ˆ˜์™€ ๊ทธ ์ž๋ฆฟ์ˆ˜๋“ค์˜ ํ•ฉ์œผ๋กœ N์„ ๋งŒ๋“ค์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋˜๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys N = int(input()) def separate_sum(N): temp = 0 for c in str(N): temp += int(c) return N + temp def solution(): answer = 0 for num in range(N): if N == separate_sum(num): answer = num break return.. 2021. 6. 7.