๐ programmers ๊ฐ์ฅ ๋จผ ๋ ธ๋ Level 3
3๋ ๋ฒจ ์น๊ณ ๋ ์ฝ๋ค. bfs๊ฐ ์ด์ ๋ ์ ์ผ ์ฌ์ด ๊ฒ ๊ฐ๋ค.
- ํ์ด
from collections import deque, defaultdict import math def solution(n, edge): path = defaultdict(list) for a, b in edge: path[a].append(b) path[b].append(a) far = {x:math.inf for x in range(1, n + 1)} far[1] = 1 queue = deque([1]) while queue: cur_node = queue.popleft() cur_far = far[cur_node] for i in path[cur_node]: if cur_far + 1 < far[i]: far[i] = cur_far + 1 queue.append(i) return list(far.values()).count(max(far.values()))
far ์ด๋ผ๋ ๋์ ์ด๋ฆฌ๋ฅผ ๋ง๋ค์ด์ key ๊ฐ์ n ๋งํผ ๋ฃ์ด์ฃผ๊ณ value์ ๋ฌดํ๋ ๊ฐ์ ์ค ๋ค์ ๋ฐฉ๋ฌธ ์ ๊ฑฐ๋ฆฌ๊ฐ ์์๋ ๊ฐฑ์ ํ๋ ์์ผ๋ก DP ๋๋์ผ๋ก ํ์ด์ก๋ค.
far ๊ฐ ๋ฆฌ์คํธ๋ก ๋์ด์์๋๋ ์์ฒญ ๋๋ ธ๋๋ฐ dict๋ก ๋ฐ๊พธ๊ณ ๋๋ 10๋ฐฐ๋ ๋นจ๋ผ์ก๋ค.return ๊ฐ์ count ๋ฅผ ์จ์ฃผ์๋๋ฐ for๋ฌธ์ ํ ๋ฒ ๋ ์ฐ๋๊ฒ ์ซ์ด์ ์ ๋ ๊ฒ ์จ์ฃผ์๋ค. list๋ก์ ๋ณํ๋ ์์ด์ ์ด๋ค ๋ฐฉ์์ด ๋ ๋น ๋ฅธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์๊ฐ๋๋ ๋๋ก ์ผ๋จ ์จ๋ดค๋ค.
๋์์ง ์์ ๊ฒ ๊ฐ๋ค.count() ํจ์๋ ๋ฆฌ์คํธ์์๋ง ๋จน๋๋ฐ far.values() ๊ฐ ๋ฆฌ์คํธ ํ์์ผ๋ก ๋์์ type์ด ๋ฆฌ์คํธ ์ธ ์ค ์์๋๋ฐ count๊ฐ ์๋์ด์ ์ ๋ ๊ฒ ๋ฐ๊พธ์ด ์ฃผ์๋ค.
test = {x:x+1 for x in range(1, 10)} print(type(test.values())) #<class 'dict_values'>
<class 'dict_values'> ๋ผ๊ณ ๋์จ๋ค.
๐ ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ
- ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์์์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ์์คํ ํ ์ด๋ธ์ด๋ค.
- ์ฌ์ฉ์๊ฐ ํ ์ด๋ธ์ ์์ฑํ๊ฑฐ๋ ๋ณ๊ฒฝํ๋ ์์ ์ ํ ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ํด ์๋์ผ๋ก ๊ฐฑ์ ๋๋ ํ ์ด๋ธ์ด๋ค.
- ์ฌ์ฉ์๋ ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ๋ฅผ ์ง์ ์์ , ์ญ์ ํ ์ ์๋ค.
- ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ๋ ์์คํ ์ด ๊ด๋ฆฌํ๋ ํ ์ด๋ธ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์๊ฐ ๋ด๋ ์ํธ๊ธฐํธ๋ง ๋ณด์ฌ์ ธ์ ์ ์ ์๋ค.
๐ ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ ๋ทฐ
- ๋ฐ์ดํฐ ๋์ ๋๋ฆฌ์ ๋ด์ฉ์ ์ฌ์ฉ์๊ฐ ์ดํดํ ์ ์๋ ๋ด์ฉ์ผ๋ก ๋ณํํ์ฌ ์ ๊ณตํ๋ค.