๋ชฉ์ฐจ
๋ฌธ์
ํธ๋ฆฌ์์ ๋ฆฌํ ๋ ธ๋๋, ์์์ ๊ฐ์๊ฐ 0์ธ ๋ ธ๋๋ฅผ ๋งํ๋ค.
ํธ๋ฆฌ๊ฐ ์ฃผ์ด์ก์ ๋, ๋ ธ๋ ํ๋๋ฅผ ์ง์ธ ๊ฒ์ด๋ค. ๊ทธ ๋, ๋จ์ ํธ๋ฆฌ์์ ๋ฆฌํ ๋ ธ๋์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ ธ๋๋ฅผ ์ง์ฐ๋ฉด ๊ทธ ๋ ธ๋์ ๋ ธ๋์ ๋ชจ๋ ์์์ด ํธ๋ฆฌ์์ ์ ๊ฑฐ๋๋ค.
์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ํธ๋ฆฌ๊ฐ ์๋ค๊ณ ํ์.
ํ์ฌ ๋ฆฌํ ๋ ธ๋์ ๊ฐ์๋ 3๊ฐ์ด๋ค. (์ด๋ก์ ์์น ๋ ๋ ธ๋) ์ด๋, 1๋ฒ์ ์ง์ฐ๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ๋ณํ๋ค. ๊ฒ์ ์์ผ๋ก ์์น ๋ ๋ ธ๋๊ฐ ํธ๋ฆฌ์์ ์ ๊ฑฐ๋ ๋ ธ๋์ด๋ค.
์ด์ ๋ฆฌํ ๋ ธ๋์ ๊ฐ์๋ 1๊ฐ์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํธ๋ฆฌ์ ๋ ธ๋์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค์๋ 0๋ฒ ๋ ธ๋๋ถํฐ N-1๋ฒ ๋ ธ๋๊น์ง, ๊ฐ ๋ ธ๋์ ๋ถ๋ชจ๊ฐ ์ฃผ์ด์ง๋ค. ๋ง์ฝ ๋ถ๋ชจ๊ฐ ์๋ค๋ฉด (๋ฃจํธ) -1์ด ์ฃผ์ด์ง๋ค. ์ ์งธ ์ค์๋ ์ง์ธ ๋ ธ๋์ ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ํธ๋ฆฌ์์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ ธ๋๋ฅผ ์ง์ ์ ๋, ๋ฆฌํ ๋ ธ๋์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
5
-1 0 0 1 1
2
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
2
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
5
-1 0 0 1 1
1
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
1
์์ ์ ๋ ฅ 3 ๋ณต์ฌ
5
-1 0 0 1 1
0
์์ ์ถ๋ ฅ 3 ๋ณต์ฌ
0
์์ ์ ๋ ฅ 4 ๋ณต์ฌ
9
-1 0 0 2 2 4 4 6 6
4
์์ ์ถ๋ ฅ 4 ๋ณต์ฌ
2
์ฝ๋
import sys
sys.setrecursionlimit(10**6)
def removeTreeDfs(A, removeIndex):
A[removeIndex] = None
for i in range(len(A)):
if removeIndex == A[i]:
removeTreeDfs(A, i)
N = int(sys.stdin.readline().rstrip()) # ๋
ธ๋๊ฐ์
nodeList = list(map(int,sys.stdin.readline().rstrip().split())) # ๋
ธ๋ ๋ฆฌ์คํธ
trueList = [True for i in range(N)]
removeIndex = int(sys.stdin.readline().rstrip()) # ์ญ์ ์ธ๋ฑ์ค
# remove subTree
removeTreeDfs(nodeList, removeIndex)
# find leaf node
leafCnt = 0
for i in range(N):
if nodeList[i] != None and i not in nodeList:
leafCnt += 1
print(leafCnt)
๋ฆฌ๋ทฐ
ํ๋์ ๋ ธ๋๋ฅผ ์ญ์ ํ ํ์ ๋ฆฌํ ๋ ธ๋์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์๋ค.
ํธ๋ฆฌ์ ๋ ธ๋ ์ญ์ ์ฐ์ฐ์ DFS๋ฅผ ์ด์ฉํด ์งํํ์๋ค.
์ฒซ ์๋์์ ์ค์ํ ์ ์ ํธ๋ฆฌ๊ฐ ๋ฌด์กฐ๊ฑด ์ด์งํธ๋ฆฌ๋ผ๊ณ ๊ฐ์ ํ๊ณ ํ๋ค๋ ๊ฒ์ด์๋ค.
๋ฐ๋ผ์ ์ฒซ childIdx๋ฅผ ์ฐพ๊ณ ๊ทธ๊ฒ์ +1๊น์ง๋ง ๊ณ ๋ คํ์๋๋ฐ
์์์์๋ ๋ฌธ์ ๊ฐ ์์์ง๋ง ์ค์ ์ ์ถํ ์ฝ๋๋ ํ๋ฆฌ๊ฒ ๋์๋ค.
๋ฐ๋ผ์ ๋ชจ๋ ์์ ๋ ธ๋๋ฅผ ์ฐพ์ ์ ์๋๋ก ๋ค์ ๋ฐ๊พธ์ด์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ
์ ๋ต์ ๋ฐ์๋ค.
def removeTreeDfs(A, removeIndex):
A[removeIndex] = None
# ์์ ๋
ธ๋ ์ฐพ๊ธฐ
for i in range(len(A)):
if removeIndex == A[i]:
removeTreeDfs(A, i)
'๐ฆ | ์ฝ๋ฉํ ์คํธ ์ฐ์ต > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 23883 ์๊ณ ๋ฆฌ์ฆ ์์ - ์ ํ ์ ๋ ฌ 3 (0) | 2023.04.12 |
---|---|
[Python] ๋ฐฑ์ค 1083 ์ํธ (0) | 2022.03.28 |
[Python] ๋ฐฑ์ค 1920 ์ ์ฐพ๊ธฐ (0) | 2022.03.28 |
[Python] ๋ฐฑ์ค 1966๋ฒ ํ๋ฆฐํฐ ํ (0) | 2022.03.28 |
[Python] ๋ฐฑ์ค 10951๋ฒ A+B - 4 (0) | 2022.01.10 |
๋๊ธ