๐ค๋ฌธ์ ํด๊ฒฐ
1. D4 | BFS
2. ์ฃผ์ด์ง ์ธํ๊ฐ์ผ๋ก ์ธ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค.
3. ๋๊ฐ์ ๋ ธ๋๋ฅผ ํ์ํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ๋ฐฉ๋ฌธ์ฌ๋ถ๋ฅผ ํ์ธํ visited ๋ฆฌ์คํธ, BFS์์ ๊ฐ์ ๊น์ด์์ ๊ฐ์ฅ ํฐ ์ซ์๋ฅผ ๊ธฐ์ตํด๋ result๋ฅผ ๋ง๋ค๊ณ deque๋ฅผ ์ด์ฉํด BFS ํ์์ ํ๋ค.
4. ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํด์ BFS์ ๊น์ด๋ง๋ค result์ ๊ฐ์ ๊ฐฑ์ ํด์ค๋ค.
5. ๋ง์ง๋ง์ผ๋ก ๊ฐฑ์ ๋ result ๋ฅผ ์ถ๋ ฅ
๐จ
๐ป์์ค ์ฝ๋
from _collections import deque
def contact(current_q):
global result
# ๋ง์ง๋ง ์ฐ๋ฝ๋ฐ์ ์ฌ๋๋ค ์ค ๊ฐ์ฅ ํฐ ๊ฐ
result = max(current_q)
# ๋ค์ ์ฐ๋ฝ ๋ฐ์ ์ฌ๋๋ค์ด ๋ค์ด๊ฐ ๋ฆฌ์คํธ
next_q = deque()
# ํ์ฌ ์ฐ๋ฝ๋ฐ์ ์ฌ๋๋ค์ด ์ฐ๋ฝ ํ ์ฌ๋๋ค์ ์ฐพ๋ ๊ณผ์
while current_q:
c = current_q.pop()
for neighbor in adj[c]:
if visited[neighbor] == 0:
next_q.append(neighbor)
visited[neighbor] = 1
# ๋ง์ฝ ๋ค์์ ์ฐ๋ฝ ๋ฐ์ ์ฌ๋์ด ์์ผ๋ฉด
if next_q:
contact(next_q)
for tc in range(1, 11):
n, start = map(int, input().split())
# ์ธ์ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ ๋ค
adj_list = list(map(int, input().split()))
adj = {i:[] for i in range(1, 101)}
for i in range(0, n, 2):
adj[adj_list[i]].append(adj_list[i+1])
# ๋ฐฉ๋ฌธ ์ฒดํฌ ๋ฆฌ์คํธ, ๊ฒฐ๊ณผ ๊ฐ ์ ์ฅ, q
visited = [0]*101
visited[start] = 1
result = 0
q = deque()
q.append(start)
contact(q)
print('#{} {}'.format(tc, result))
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: SW Expert Academy
๋น์์ฐ๋ฝ๋ง๊ณผ ์ฐ๋ฝ์ ์์ํ๋ ๋น๋ฒ์ ๋ํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ์ฅ ๋์ค์ ์ฐ๋ฝ์ ๋ฐ๊ฒ ๋๋ ์ฌ๋ ์ค ๋ฒํธ๊ฐ ๊ฐ์ฅ ํฐ ์ฌ๋์ ๊ตฌํ๋ ํจ์๋ฅผ ์์ฑํ์์ค.
[์์]
์๋๋ ๋น์์ฐ๋ฝ๋ง์ ๋ํ๋ธ ๊ทธ๋ฆผ์ด๋ค.
๊ฐ ์์ ๊ฐ๊ฐ์ธ์ ์๋ฏธํ๋ฉฐ, ์ ์์ ์ซ์๋ ๊ทธ์ฌ๋์ ๋ฒํธ๋ฅผ ๋ํ๋ด๊ณ ๋นจ๊ฐ์์ ์ฐ๋ฝ์ ์์ํ๋ ๋น๋ฒ์ ์๋ฏธํ๋ค.
ํ์ดํ๋ ์ฐ๋ฝ์ด ๊ฐ๋ฅํ ๋ฐฉํฅ์ ์๋ฏธํ๋ค.
์์ ์์์์๋ 7๋ฒ๊ณผ 1๋ฒ์ ์๋ก ์ฐ๋ฝ์ด ๊ฐ๋ฅํ๋ค,
ํ์ง๋ง 2๋ฒ๊ณผ 7๋ฒ์ ๊ฒฝ์ฐ 2๋ฒ์ 7๋ฒ์๊ฒ ์ฐ๋ฝํ ์ ์์ง๋ง 7๋ฒ์ 2๋ฒ์๊ฒ ์ฐ๋ฝํ ์ ์๋ค.
๋น์์ฐ๋ฝ๋ง์ด ๊ฐ๋๋๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ฐ๋ฝ์ ์์ํ๋ ๋น๋ฒ์ธ 2๋ฒ์ ์ฐ๋ฝ ๊ฐ๋ฅํ 7๋ฒ๊ณผ 15๋ฒ์ ๋์์ ์ฐ๋ฝ์ ์ทจํ๋ค (๋ค์ ๊ฐ ํตํ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ).
๊ทธ ๋ค์ ์๋์ ๊ฐ์ด 7๋ฒ์ 1๋ฒ์๊ฒ, 15๋ฒ์ 4๋ฒ์๊ฒ ์ฐ๋ฝ์ ์ทจํ๋ค (์ด ๊ณผ์ ์ ๋์์ ์ผ์ด๋๋ค๊ณ ๊ฐ์ ํ๋ค).
๊ทธ ๋ค์ ์๋์ ๊ฐ์ด 1๋ฒ์ 8๋ฒ๊ณผ 17๋ฒ์๊ฒ ๋์์ ์ฐ๋ฝํ๋ฉฐ, ์ด์ ๋์์ 4๋ฒ์ 10๋ฒ์๊ฒ ์ฐ๋ฝํ๋ค.
7๋ฒ๊ณผ 2๋ฒ์ ๊ฒฝ์ฐ๋ ์ด๋ฏธ ์ฐ๋ฝ์ ๋ฐ์ ์ํ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ ์ฐ๋ฝํ์ง ์๋๋ค.
์์ ๋ชจ์ต์ด ์ฐ๋ฝ์ด ๋๋ ๋ง์ง๋ง ๋ชจ์ต์ด ๋๋ฉฐ, ๋ง์ง๋ง์ ๋์์ ์ฐ๋ฝ ๋ฐ์ ์ฌ๋์ 8๋ฒ, 10๋ฒ, 17๋ฒ์ ์ธ ๋ช
์ด๋ค.
์ด ์ค์์ ๊ฐ์ฅ ์ซ์๊ฐ ํฐ ์ฌ๋์ 17๋ฒ์ด๋ฏ๋ก 17์ ๋ฐํํ๋ฉด ๋๋ค.
โป 3, 6, 11, 22๋ฒ์ ์๊ฐ์ด ์ง๋๋ ์ฐ๋ฝ์ ๋ฐ์ง ๋ชปํ๋ค.
[์ ์ฝ ์ฌํญ]
์ฐ๋ฝ ์ธ์์ ์ต๋ 100๋ช
์ด๋ฉฐ, ๋ถ์ฌ๋ ์ ์๋ ๋ฒํธ๋ 1์ด์, 100์ดํ์ด๋ค.
๋จ, ์์์์ 5๋ฒ์ด ์กด์ฌํ์ง ์๋ฏ์ด ์ค๊ฐ ์ค๊ฐ์ ๋น์ด์๋ ๋ฒํธ๊ฐ ์์ ์ ์๋ค.
ํ ๋ช
์ ์ฌ๋์ด ๋ค์์ ์ฌ๋์๊ฒ ์ฐ๋ฝ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํญ์ ๋ค์ ๊ฐ ํตํ๋ฅผ ํตํด ๋์์ ์ ๋ฌํ๋ค.
์ฐ๋ฝ์ด ํผ์ง๋ ์๋๋ ํญ์ ์ผ์ ํ๋ค (์ ํ๋ฅผ ๋ฐ์ ์ฌ๋์ด ๋ค์์ฌ๋์๊ฒ ์ ํ๋ฅผ ๊ฑฐ๋ ์๋๋ ๋์ผ).
๋น์์ฐ๋ฝ๋ง ์ ๋ณด๋ ์ฌ์ ์ ๊ณต์ ๋๋ฉฐ ํ ๋ฒ ์ฐ๋ฝ์ ๋ฐ์ ์ฌ๋์๊ฒ ๋ค์ ์ฐ๋ฝ์ ํ๋ ์ผ์ ์๋ค.
์์์์์ 3, 6, 11, 22๋ฒ๊ณผ ๊ฐ์ด ์ฐ๋ฝ์ ๋ฐ์ ์ ์๋ ์ฌ๋๋ ์กด์ฌํ ์ ์๋ค.
[์
๋ ฅ]
์
๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ค์๋ ์
๋ ฅ ๋ฐ๋ ๋ฐ์ดํฐ์ ๊ธธ์ด์ ์์์ ์ด ์ฃผ์ด์ง๋ค.
๊ทธ ๋ค์ ์ค์ ์
๋ ฅ๋ฐ๋ ๋ฐ์ดํฐ๋ {from, to, from, to, …} ์ ์์๋ก ํด์๋๋ฉฐ ์์์ ๊ฒฝ์ฐ๋ {2, 7, 11, 6, 6, 2, 2, 15, 15, 4, 4, 2, 4, 10, 7, 1, 1, 7, 1, 8, 1, 17, 3, 22}์ ๊ฐ๋ค.
๊ทธ๋ฐ๋ฐ ์์์๋ ์๊ด์ด ์์ผ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ด ์ฃผ์ด์ง ์ธํ๋ ๋์ผํ ๋น์์ฐ๋ฝ๋ง์ ๋ํ๋ธ๋ค (๊ฐ์ ๋น์์ฐ๋ฝ๋ง์ ํํํ๋ ๋ค์ํ ์ธํ์ด ์กด์ฌ ๊ฐ๋ฅํ๋ค).
{1, 17, 3, 22, 1, 8, 1, 7, 7, 1, 2, 7, 2, 15, 15, 4, 6, 2, 11, 6, 4, 10, 4, 2}
๋ค์๊ณผ ๊ฐ์ด ๋์ผํ {from, to}์์ด ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฉฐ, ํ ๋ฒ ๊ธฐ๋ก๋ ๊ฒฝ์ฐ์ ์ฌ๋ฌ ๋ฒ ๊ธฐ๋ก๋ ๊ฒฝ์ฐ์ ์ฐจ์ด๋ ์๋ค.
{1, 17, 1, 17, 1, 17, 3, 22, 1, 8, 1, 7, 7, 1, 2, 7, 2, 15, 15, 4, 6, 2, 11, 6, 4, 10, 11, 6, 4, 2}
[์ถ๋ ฅ]
#๋ถํธ์ ํจ๊ป ํ
์คํธ ์ผ์ด์ค์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๊ณ , ๊ณต๋ฐฑ ๋ฌธ์ ํ ํ
์คํธ ์ผ์ด์ค์ ๋ํ ๋ต์ ์ถ๋ ฅํ๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ๋ฐฑ์ค - 11048. ์ด๋ํ๊ธฐ (0) | 2020.08.18 |
---|---|
[python] SWEA - 4261. ๋น ๋ฅธ ํด๋์ ํ ํคํจ๋ (0) | 2020.08.17 |
[python] SWEA - 1219. [S/W ๋ฌธ์ ํด๊ฒฐ ๊ธฐ๋ณธ] 4์ผ์ฐจ - ๊ธธ์ฐพ๊ธฐ (0) | 2020.08.15 |
[python] SWEA - 1861. ์ ์ฌ๊ฐํ ๋ฐฉ (0) | 2020.08.14 |
[python] SWEA - 1258. [S/W ๋ฌธ์ ํด๊ฒฐ ์์ฉ] 7์ผ์ฐจ - ํ๋ ฌ์ฐพ๊ธฐ (0) | 2020.08.13 |