์๋ ํ์ธ์! ์ด๋ฒ ๊ธ์์๋ ๋ฐฑ์ค 11725๋ฒ ๋ฌธ์ ์ธ “ํธ๋ฆฌ์ ๋ถ๋ชจ ์ฐพ๊ธฐ” ๋ฌธ์ ๋ฅผ ํจ๊ป ํด๊ฒฐํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ๋ ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ๋ฌธ์ ๋ฅผ ๋ถ์ํ๊ณ , ์ ๊ทผ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ ํ, ์ต์ข ์ ์ธ ์ ๋ต ์ฝ๋๋ฅผ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
๋ฌธ์ URL: https://www.acmicpc.net/problem/11725
1. ๋ฌธ์ ์ค๋ช
1) ๋ฌธ์ ๊ฐ์
ํธ๋ฆฌ ๊ตฌ์กฐ์์ ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ ๋๋ค. ์ฃผ์ด์ง ํธ๋ฆฌ๋ N๊ฐ์ ๋ ธ๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๊ฐ ๋ ธ๋๋ 1๋ฒ๋ถํฐ N๋ฒ๊น์ง์ ๋ฒํธ๋ฅผ ๊ฐ์ต๋๋ค. 1๋ฒ ๋ ธ๋๋ ํญ์ ๋ฃจํธ ๋ ธ๋์ ๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ ์ถ๋ ฅํด์ผ ํฉ๋๋ค.
2) ์ ๋ ฅ
• ์ฒซ ๋ฒ์งธ ์ค: ๋ ธ๋์ ์ N (2 ≤ N ≤ 100,000)
• ๋ค์ N-1๊ฐ์ ์ค: ๋ ๋ ธ๋ ์ฌ์ด์ ๊ฐ์ ์ ๋ํ๋ด๋ ๋ ์ ์ a, b
3) ์ถ๋ ฅ
• ๊ฐ ๋ ธ๋ 2๋ฒ๋ถํฐ N๋ฒ๊น์ง์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
2. ์ ๊ทผ๋ฒ
1) ์ ๋ ฅ๋ฐ๊ธฐ
• ๋น ๋ฅธ ์ ๋ ฅ์ ์ํด sys.stdin.readline์ ์ฌ์ฉํฉ๋๋ค.
• ํธ๋ฆฌ๋ฅผ ์ธ์ ๋ฆฌ์คํธ๋ก ํํํ์ฌ, ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ์ ์ ์ฅํฉ๋๋ค.
2) DFS๋ฅผ ์ด์ฉํ ๋ถ๋ชจ ์ฐพ๊ธฐ
• DFS(๊น์ด ์ฐ์ ํ์)๋ฅผ ์ด์ฉํด ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ ์ฐพ์ต๋๋ค. ๋ฃจํธ ๋ ธ๋์ธ 1๋ฒ ๋ ธ๋์์ ์์ํ์ฌ, ์ฐ๊ฒฐ๋ ๋ ธ๋๋ฅผ ํ์ํ๋ฉด์ ๋ถ๋ชจ ๋ ธ๋๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
• ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋๋ฅผ ์ฐพ์ ๋๋ง๋ค, ํด๋น ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ ํ์ฌ ๋ ธ๋๋ก ์ค์ ํ๊ณ , ๋ค์ DFS๋ฅผ ์ํํฉ๋๋ค.
3) ๊ฒฐ๊ณผ ์ถ๋ ฅ
• ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ 2๋ฒ ๋ ธ๋๋ถํฐ N๋ฒ ๋ ธ๋๊น์ง ์ถ๋ ฅํฉ๋๋ค.
3. ์ ๋ต ์ฝ๋
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10**6) # ์ฌ๊ท ํธ์ถ ํ๋๋ฅผ ์ค์ ํ์ฌ ๊น์ ์ฌ๊ท๋ฅผ ์ง์
# ์
๋ ฅ
N = int(input()) # ๋
ธ๋์ ๊ฐ์
adj = [[] for _ in range(N+1)] # ์ธ์ ๋ฆฌ์คํธ ์ด๊ธฐํ (1๋ถํฐ N๊น์ง ์ฌ์ฉ)
# ๊ฐ์ ์
๋ ฅ ๋ฐ์ ์ธ์ ๋ฆฌ์คํธ์ ์ ์ฅ
for _ in range(N-1):
a, b = map(int, input().split())
adj[a].append(b)
adj[b].append(a)
# ๋ถ๋ชจ ๋
ธ๋๋ฅผ ์ ์ฅํ ๋ฐฐ์ด ์ด๊ธฐํ
# 0๋ฒ ์ธ๋ฑ์ค๋ ์ฌ์ฉํ์ง ์๊ณ , parent[1]์ ๋ฃจํธ ๋
ธ๋์ด๋ฏ๋ก 0์ ๋ฃ์
# ๋๋จธ์ง๋ ์์ง ๋ถ๋ชจ๊ฐ ์ค์ ๋์ง ์์์์ ๋ํ๋ด๊ธฐ ์ํด -1๋ก ์ด๊ธฐํ
parent = [0] + [0] + [-1] * (N-1)
# DFS๋ฅผ ํตํด ๊ฐ ๋
ธ๋์ ๋ถ๋ชจ ๋
ธ๋๋ฅผ ์ฐพ๋ ํจ์
def dfs(idx):
for i in adj[idx]: # ํ์ฌ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋
ธ๋๋ค์ ํ์
if parent[i] == -1: # ๋ถ๋ชจ ๋
ธ๋๊ฐ ์์ง ์ค์ ๋์ง ์์ ๊ฒฝ์ฐ
parent[i] = idx # ํ์ฌ ๋
ธ๋๋ฅผ ๋ถ๋ชจ๋ก ์ค์
dfs(i) # ์ฐ๊ฒฐ๋ ๋
ธ๋์ ๋ํด DFS ์ํ
dfs(1) # 1๋ฒ ๋
ธ๋๊ฐ ๋ฃจํธ์ด๋ฏ๋ก DFS ์์
# ๊ฐ ๋
ธ๋์ ๋ถ๋ชจ ๋
ธ๋ ์ถ๋ ฅ (2๋ฒ ๋
ธ๋๋ถํฐ N๋ฒ ๋
ธ๋๊น์ง)
for i in range(2, N+1):
print(parent[i])
4. ์ฝ๋ ์ค๋ช
1) ์ ๋ ฅ ๋ฐ๊ธฐ
• sys.stdin.readline์ ์ฌ์ฉํ์ฌ ๋ ธ๋์ ์ N๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ๋น ๋ฅด๊ฒ ์ ๋ ฅ๋ฐ์ต๋๋ค.
• ์ธ์ ๋ฆฌ์คํธ adj๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ๋ ธ๋๋ค์ ์ ์ฅํฉ๋๋ค.
2) DFS๋ฅผ ์ด์ฉํ ๋ถ๋ชจ ์ฐพ๊ธฐ
• parent ๋ฆฌ์คํธ๋ฅผ ์ด๊ธฐํํ์ฌ ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ ์ ์ฅํ ์ ์๋๋ก ํฉ๋๋ค. ๋ฃจํธ ๋ ธ๋์ธ 1๋ฒ ๋ ธ๋๋ ๋ถ๋ชจ๊ฐ ์์ผ๋ฏ๋ก 0์ผ๋ก ์ค์ ํฉ๋๋ค.
• DFS ํจ์๋ ์ฌ๊ท์ ์ผ๋ก ํธ์ถ๋๋ฉฐ, ํ์ฌ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ๋ ธ๋๋ค ์ค ๋ถ๋ชจ๊ฐ ์ค์ ๋์ง ์์ ๋ ธ๋๋ฅผ ์ฐพ์ ๊ทธ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ ํ์ฌ ๋ ธ๋๋ก ์ค์ ํฉ๋๋ค.
3) ๊ฒฐ๊ณผ ์ถ๋ ฅ
• DFS๊ฐ ์๋ฃ๋ ํ, ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๋ฅผ 2๋ฒ ๋ ธ๋๋ถํฐ N๋ฒ ๋ ธ๋๊น์ง ์ถ๋ ฅํฉ๋๋ค.
5. Github์ผ๋ก ํ์ธ
'๐ ์๊ณ ๋ฆฌ์ฆ > BOJ(๋ฐฑ์ค)_Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ(๋ฐฑ์ค) 4179[๋ถ!] (0) | 2024.07.29 |
---|---|
BOJ(๋ฐฑ์ค) 1753[์ต๋จ๊ฒฝ๋ก] (0) | 2024.07.26 |
BOJ(๋ฐฑ์ค) 1389[์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น] (0) | 2024.07.23 |
BOJ(๋ฐฑ์ค) 11724[์ฐ๊ฒฐ ์์์ ๊ฐ์] (0) | 2024.07.22 |
BOJ(๋ฐฑ์ค) 14891[ํฑ๋๋ฐํด] (0) | 2024.07.20 |