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

๐Ÿƒ algorithm/boj105

BOJ 1916 - ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 1916๋ฒˆ ํ’€์ด ๊ณผ์ • ํ•œ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ๊ฒฝ๋กœ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•ด ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ตœ์•…์˜ ๊ฒฝ์šฐ V = 1000์ด๊ณ  E = 100,000 ์ด๋ฏ€๋กœ O(ElgV) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ์‚ฌ์šฉํ•ด์„œ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys import heapq N = int(input()) M = int(input()) adj = [[] for _ in range(1001)] for _ in range(M): frm, to, cost = list(map(int, sys.stdin.readline().split())) adj[frm].append([to, cost]) start, goal = list(map(int, sys... 2021. 6. 7.
BOJ 15684 - ์‚ฌ๋‹ค๋ฆฌ ์กฐ์ž‘ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 15684๋ฒˆ ํ’€์ด ๊ณผ์ • DFS ์™€ ๋ฐฑํŠธ๋ž˜ํ‚น ์„ ํ™œ์šฉํ•œ ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•œ ํƒ์ƒ‰ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด๋•Œ ์‚ฌ๋‹ค๋ฆฌ์˜ ์œ„์น˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๊ณผ์ •์—์„œ ์ธ๋ฑ์Šค ๋ฒ”์œ„์— ๋Œ€ํ•œ ๊ณ ๋ ค๋ฅผ ์•ˆํ•ด์ฃผ๊ธฐ ์œ„ํ•ด board ์–‘์ชฝ์— padding ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์•ˆํ•˜๋ฉด ์–‘์ชฝ ์‚ฌ๋‹ค๋ฆฌ ์œ„์น˜ ์ธ๋ฑ์Šค๊ฐ€ board ๋ฅผ ๋ฒ—์–ด๋‚˜๋Š”์ง€์— ๋Œ€ํ•œ ์กฐ๊ฑด๋ฌธ์— ์ถ”๊ฐ€ํ•ด์ค˜์„œ ์ฝ”๋“œ๊ฐ€ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค. ์‚ฌ๋‹ค๋ฆฌ๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ–ˆ์œผ๋ฏ€๋กœ ๊ฐ ์‹œ์ž‘์ ์—์„œ ํƒ€๊ณ  ๋‚ด๋ ค์˜ฌ๋•Œ๋Š” ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์—์„œ ๋งŒ๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์˜ํ•  ์ ์€ ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ๋ฐ”๋กœ ํ•œ์นธ ๋ฐ‘์œผ๋กœ ์ „์ง„์‹œ์ผœ์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. (์•ˆ๊ทธ๋Ÿฌ๋ฉด ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ง‘๋‹ˆ๋‹ค.) DFS ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋งŒ์•ฝ ๋งŒ์กฑํ•˜๋Š” ์กฐํ•ฉ์„ ์ฐพ์•˜์„ ๊ฒฝ์šฐ์—๋Š” ์ดํ›„ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ True ๋ฅผ ๋ฐ˜ํ™˜ํ•˜.. 2021. 6. 7.
BOJ 1781 - ์ปต๋ผ๋ฉด ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 1781๋ฒˆ ํ’€์ด ๊ณผ์ • ๋งˆ๊ฐ์ผ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ฐ€์žฅ ๋งŽ์€ ์ปต๋ผ๋ฉด์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋ฐ๋“œ๋ผ์ธ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ๋ถ€ํ„ฐ ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด์„œ ํ•ด๋‹นํ•˜๋Š” ๋‚  ์ด์ƒ์˜ ๋‚ ์งœ์— ๋Œ€ํ•ด์„œ ๊ฐ€์žฅ ๋งŽ์€ ์ปต๋ผ๋ฉด์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ์„ ํƒํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์šฐ์„  ์ˆœ์œ„ ํ ๋ฅผ ๋‘ ๊ฐœ ์‚ฌ์šฉํ•ด์„œ ํ•˜๋‚˜๋Š” ๋ฐ๋“œ๋ผ์ธ์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์ปต๋ผ๋ฉด์˜ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys import heapq N = int(input()) questions = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] def init_queue(): pq = [] for deadline, cups in question.. 2021. 6. 7.
BOJ 6118 - ์ˆจ๋ฐ”๊ผญ์งˆ ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 6118๋ฒˆ ํ’€์ด ๊ณผ์ • ์‹œ์ž‘ ์ •์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒฝ๋กœ๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ ํ™œ์šฉํ•˜์—ฌ ํ•œ ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•œ ๋‹ค์Œ, ๊ฐ€์žฅ ๊ฑฐ๋ฆฌ๊ฐ€ ๋จผ ์ •์ ์„ ์ฐพ์•„์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๊ตฌํ˜„์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด์„œ dist ๋ฐฐ์—ด์„ ๊ฑฐ๋ฆฌ๊ฐ’๊ณผ ์ •์  ๋ฒˆํ˜ธ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋‹ต์„ ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys import heapq INF = sys.maxsize 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(.. 2021. 6. 7.
BOJ 2331 - ๋ฐ˜๋ณต์ˆ˜์—ด ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 2331๋ฒˆ ํ’€์ด ๊ณผ์ • ๊ทœ์น™์— ๋”ฐ๋ผ ์ƒ์„ฑ๋˜๋Š” ์ˆซ์ž๋“ค์„ ๋ชจ๋‘ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ˆซ์ž๋“ค์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด DFS ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ๊ฐ ์ˆซ์ž๋“ค์„ ์ฒ˜์Œ ๋ฐฉ๋ฌธ, ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฌธ, ์„ธ๋ฒˆ์งธ ๋ฐฉ๋ฌธ ์ด๋ ‡๊ฒŒ ์„ธ ์ข…๋ฅ˜๋กœ ๊ตฌ๋ถ„ํ•ด์ค๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ ๋ฐฉ๋ฌธ์˜ ๊ฒฝ์šฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์ง€๋งŒ ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฌธํ–ˆ์„๋•Œ๋Š” ํ•ด๋‹น ์ˆซ์ž๊ฐ€ ์ค‘๋ณต๋˜์–ด ๋‚˜ํƒ€๋‚œ๋‹ค๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ๋ฐฉ๋ฌธํšŸ์ˆ˜๋ฅผ ์ฆ๊ธฐ์‹œํ‚จ ํ›„ ๋‹ค์Œ ํƒ์ƒ‰์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ๊ฐ€์žฅ ์ฒ˜์Œ ์„ธ๋ฒˆ์งธ ๋ฐฉ๋ฌธ๋˜๋Š” ์ˆซ์ž๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒฝ์šฐ ์ดํ›„์˜ ์ˆซ์ž๋“ค์€ ๋˜๋‹ค์‹œ ๊ฒน์น˜๊ฒŒ ๋˜๋ฏ€๋กœ ํƒ์ƒ‰์„ ๊ณ„์† ์ˆ˜ํ–‰ํ•  ํ•„์š”์—†์ด ๋ฐ”๋กœ ์ข…๋ฃŒํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ import sys sys.setrecursionlimit(10**6) A, P = list(map(int, sys.stdin... 2021. 6. 7.
BOJ 4889 - ์•ˆ์ •์ ์ธ ๋ฌธ์ž์—ด ๋ฌธ์ œ ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€ - 4889๋ฒˆ ํ’€์ด ๊ณผ์ • ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ฅผ ์ ์ ˆํžˆ ๋ณ€ํ™˜ํ•˜์—ฌ ์ง์ด ๋งž๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ด„ํ˜ธ ์ง ๋งž์ถ”๊ธฐ ๋ฌธ์ œ์™€ ์œ ์‚ฌํ•œ ์ปจ์…‰์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์—ฌ๋Š” ๊ด„ํ˜ธ({)์˜ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ด„ํ˜ธ๊ฐ€ ์•ˆ์ •์ ์ธ์ง€๋Š” ์ด ๊ด„ํ˜ธ๋งŒ ๋ด์„œ๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (์ดํ›„์— ๋‚˜์˜ค๋Š” ๊ด„ํ˜ธ์— ์˜ํ–ฅ์„ ๋ฐ›์Œ) ๋Œ€์‹ ์— ๋‹ซ๋Š” ๊ด„ํ˜ธ(})์˜ ๊ฒฝ์šฐ ์ด์ „์— ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์กด์žฌํ•ด์•ผ๋งŒ ์•ˆ์ •์ ์ธ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์™”๋Š”๋ฐ ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ํ•ด๋‹น ๊ด„ํšจ๋ฅผ ์—ฌ๋Š” ๊ด„ํ˜ธ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ ๋ฟ์ž…๋‹ˆ๋‹ค. ์ด๋ฃฐ ์œ„ํ•ด ์Šคํƒ ์„ ํ™œ์šฉํ•ด์„œ ๊ด„ํ˜ธ ์ข…๋ฅ˜์— ๋”ฐ๋ผ push, pop ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ตœ์ข…์ ์œผ๋กœ ๋‚จ๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜ / 2 ๊ฐ€ ํ•„์š”ํ•œ ๋‹ซ๋Š” ๊ด„ํ˜ธ์˜ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ impo.. 2021. 6. 7.