Problem
Code
ย #1
Idea
ํ์ง ๋ชปํด์ ๋ธ๋ก๊ทธ ํ์ด ์ฐธ๊ณ ํ์
๋
ธ๋๋ฅผ ์๋ค๊ฐ๋ค ํด์ผํ๋ฏ๋ก, ๋ถ๋ชจ๋
ธ๋์์ ์์๋
ธ๋๋ก ํ๊ณ ๋ค์ด๊ฐ๋ ์ผ๋ฐ์ ์ธ dfs, bfs ๋ก๋ ํด๊ฒฐ์ด ์ ๋๋ค.
edges ์์ [๋ถ๋ชจ ๋
ธ๋, ์์ ๋
ธ๋] ๋ฅผ ๋ฐ์์์
๋ถ๋ชจ๋
ธ๋๋ ๋ฐฉ๋ฌธํ๊ณ , ์์๋
ธ๋(๋ณธ์ธ)๋ ๋ฐฉ๋ฌธ ์ ํ ๋
ธ๋๋ง dfs ๋ฅผ ํด์ผํ๋ค.
๋งค ๋ฐฉ๋ฌธ๋ง๋ค answer ๋ฆฌ์จํธ์ ํ์ฌ์ sheep ๊ฐ์๋ฅผ ์ ์ฅํ๊ณ , ๋ชจ๋ dfs ๊ฐ ๋๋ ์ max(answer) ๋ฅผ ์ถ๋ ฅํ๋ค.
ย Code
def solution(info, edges):
visited = [0] * len(info)
answer = []
def dfs(sheep, wolf):
if sheep > wolf:
answer.append(sheep)
else:
return
for parent, child in edges:
# ๋ถ๋ชจ๋ ๋ฐฉ๋ฌธํ๊ณ , ์์๋
ธ๋(๋ณธ์ธ)๋ ๋ฐฉ๋ฌธ ์ ํ ๋
ธ๋๋ง dfs
if visited[parent] and not visited[child]:
visited[child] = 1
if info[child] == 0:
dfs(sheep+1, wolf)
else:
dfs(sheep, wolf+1)
visited[child] = 0
visited[0] = 1
dfs(1, 0)
return max(answer)
Python
๋ณต์ฌ
Commentary
ํ์ด ์ฐธ๊ณ
#2
Idea
ย Code
Python
๋ณต์ฌ