๋ฌธ์
https://swexpertacademy.com/main/code/problem/problemDetail.do
๋ด ๋ฌธ์ ํ์ด
from collections import deque
for t in range(10):
l, s = map(int, input().split())
lst = list(map(int, input().split()))
maximum = max(lst)
memory = [set() for _ in range(maximum)]
for i in range(0, l, 2):
memory[lst[i]-1].add(lst[i+1])
for i in range(len(memory)):
memory[i] = list(memory[i])
visited = [0 for _ in range(maximum)]
queue = deque()
if len(memory[s-1]) == 0:
print(s)
else:
for i in memory[s-1]:
queue.append((i, 1))
while queue:
(n, cnt) = queue.popleft()
if visited[n-1] > 0:
continue
visited[n-1] = cnt
if len(memory[n-1]) == 0:
continue
for i in memory[n-1]:
queue.append((i, cnt+1))
maxResult = max(visited)
answer = 0
for i in range(maximum):
if visited[i] == maxResult:
answer = max(answer, i+1)
print("#" + str(t+1) + " " + str(answer))
๐ BFS ๋ฌธ์
- lst ๋ฆฌ์คํธ์ ์ฃผ์ด์ง๋ ๊ฐ์ ์ ๋ ฅ๋ฐ๊ณ , ๊ทธ ์ค ์ต๋๊ฐ์ ๊ตฌํด์ ๊ทธ ๋ฒ์๋งํผ memory ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋ค.
- memory์๋ ํ ์ฌ๋์ด ์ด๋ค ์ซ์์ ์ฌ๋์๊ฒ ์ฐ๋ฝ์ ๋ณด๋ผ ์ ์๋์ง์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค.
ex) 1๋ฒ ์ฌ๋์ด 7, 8, 17๋ฒ์๊ฒ ์ฐ๋ฝ์ ๋ณด๋ผ ์ ์๋ค๊ณ ํ๋ฉด memory[0] = {7, 8, 17}
๊ฐ์ ์ฐ๋ฝ๋ง์ด ์ฌ๋ฌ ๋ฒ ์ ๋ ฅ๋ ์ ์๋ค๊ณ ํ์ผ๋ฏ๋ก, ์ค๋ณต ์ ๊ฑฐ๋ฅผ ์ํด set ํํ์ ์์๋ก ๊ตฌ์ฑํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ ๋ณด ์ ๋ ฅ์ด ๋๋๋ฉด ๋ค์ ๊ทธ set๋ค์ ๋ฆฌ์คํธ๋ก ํ๋ณํํด์ฃผ์๋ค. - visited ๋ฆฌ์คํธ๋ bool์ด ์๋ intํ์ผ๋ก ๋ง๋ค์ด์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ฐฉ๋ฌธํ ๊ณณ์ ์ ์ ์๋๋ก ํ๋ค.
- queue์๋ ์์์ ์์ ์ด์ด์ง๋ ์ ๊ณผ, ๋ช ๋ฒ์งธ๋ก ๋ฐฉ๋ฌธ์ธ์ง ํํํ๋ ๊ฐ์ ํํ ์์ผ๋ก ๋ฃ์ด์ฃผ์๋ค.
๊ทธ๋ฆฌ๊ณ while ๋ฐ๋ณต์ ํ๋ฉฐ queue์ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์์ ๊ฐ์ n, cnt์ ํ ๋นํด์ ์ฌ์ฉํ๋ค. - visited[n-1]์ด 0๋ณด๋ค ํฌ๋ค๋ฉด ์ด๋ฏธ ์ฐ๋ฝ์ ๋ฐ์ ๊ณณ์ด๋ฏ๋ก ๋ค์ ์ฐ๋ฝํ ์ ์๊ณ , continue ํ๋ค.
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ visited[n-1]์ cnt๋ฅผ ์ ์ฅํด์ ๋ช ๋ฒ์งธ๋ก ๋ฐฉ๋ฌธํ๋ ์ ์ธ์ง๋ฅผ ํ์ํ๋ค. - memory[n-1]์ ์ ์ฅ๋ ๊ฐ์ด ์๋ค๋ฉด ํด๋น ์ ์ ์ฐ๋ฝํ ์ ์๋ ๊ณณ์ด ์๋ ๊ฒ์ด๋ฏ๋ก continue ํ๋ค.
๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ memory[n-1]์ ์ ์ฅ๋ ์ ๋ค์ ๋ชจ๋ queue์ ์ถ๊ฐํ๋ค. - queue๊ฐ ๋น ๋๊น์ง ์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๊ณ , ๋ฐ๋ณต์ด ๋๋๋ฉด
visited์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ง ์์ ์ค ๊ฐ์ฅ ํฐ ์๋ฅผ ์ฐพ์์ ๊ฒฐ๊ณผ๋ก ์ถ๋ ฅํ๋ค.
๐ก ํผ๋๋ฐฑ
- ์์์ ์ ๊ธฐ์ค์ผ๋ก ๊ณ์ ํ์ํ ๊ณณ๋ค์ ์ ์ ํ ์ฐพ์์ฃผ๋ฉด ๋๋ ๊ฐ๋จํ ๋ฌธ์ ์๋ค.
'4๏ธโฃ Python > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python Algorithm] ๋ฏธ๋ก1 SWEA #1226 (0) | 2022.07.05 |
---|---|
[Python Algorithm] ๋ณด๊ธ๋ก SWEA #1249 (0) | 2022.07.05 |
[Python Algorithm] ๊ฐ์ฅ ๊ธด ๋ฐ์ดํ ๋ ๋ถ๋ถ ์์ด BOJ #11054 (0) | 2022.06.27 |
[Python Algorithm] ๋ ์ด์ ํต์ BOJ #6087 (0) | 2022.06.24 |
[Python Algorithm] ํ๋ก์ด๋ BOJ #11404 (0) | 2022.06.23 |
๋๊ธ