728x90
๋ฌธ์
๋ฐฑ์ค ๋ด์ค ์ ํ๊ธฐ https://www.acmicpc.net/problem/1135
์ฝ๋
n = int(input())
parent_list = list(map(int, input().split()))
child_list = [list() for _ in range(n)]
for child in range(1, n) :
parent = parent_list[child]
child_list[parent].append(child)
def dfs(node) :
if not child_list[node] :
return 0
result = list()
for child in child_list[node] :
result.append(dfs(child))
result.sort( reverse = True)
result = [ result[i] + i + 1 for i in range(len(child_list[node])) ]
return max(result)
print(dfs(0))
ํ์ด
- ๊ทธ๋ฆฌ๋ํ๊ฒ ํธ๋ฆฌ๋ฅผ ์ํํ๋ค.
- ์ ํ๋ฅผ ๋ฐ์ ๋ถํ์ง์์ ์๊ธฐ ๋ถํ์๊ฒ ์ ํ๋ฅผ ํ ์ ์๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ ํ๋ฅผ ๋ชจ๋ ๋๋ฆฌ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์ง์๋ถํฐ ์ ํ๋ฅผ ๋๋ฆฌ๋๊ฒ ๋ ์๊ฐํจ์จ์ ์ด๋ค.
- ๋ชจ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ์ ๋ ฌํ๋ฉด i๋ฒ์งธ ์ง์์ด ์์ ์ ๋ถํ์ง์์๊ฒ ์ ํ๋ฅผ ๋๋ฆฌ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์ด ์๊ฐ์ (๋ถํ ์ง์ ์์ฒด๊ฐ ์ ํ์ ์๋ชจํ๋ ์๊ฐ ) + (i + 1) ์ด ๋๋ค.
- ์ด๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋ชจ๋ ๋ ธ๋์ ๋ํด ์ ์ฉํ์ฌ ์ ๋ต์ ๊ตฌํ๋ค.
728x90
'์ฝ๋ฉํ ์คํธ๐ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] N-Queen (0) | 2024.08.07 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์์์ฐพ๊ธฐ (0) | 2024.08.06 |
[๋ฐฑ์ค] 1927. ์ต์ ํ & 11279. ์ต๋ ํ (0) | 2024.07.31 |
[๋ฐฑ์ค] 14888. ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (2) | 2024.07.14 |
[๋ฐฑ์ค] 1012. ์ ๊ธฐ๋ ์๋ฐฐ์ถ (2) | 2024.07.14 |