๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/1991)
<ํธ๋ฆฌ ์ํ>
๋ฌธ์
์ด์งํธ๋ฆฌ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์ ์ํ(preorder traversal), ์ค์ ์ํ(inorder traversal), ํ์ ์ํ(postorder traversal) ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋ฅผ ๋ค์ด ์์ ๊ฐ์ ์ด์งํธ๋ฆฌ๊ฐ ์ ๋ ฅ๋๋ฉด,
์ ์ ์ํํ ๊ฒฐ๊ณผ : ABDCEFG // (๋ฃจํธ) (์ผ์ชฝ ์์) (์ค๋ฅธ์ชฝ ์์)
์ค์ ์ํํ ๊ฒฐ๊ณผ : DBAECFG // (์ผ์ชฝ ์์) (๋ฃจํธ) (์ค๋ฅธ์ชฝ ์์)
ํ์ ์ํํ ๊ฒฐ๊ณผ : DBEGFCA // (์ผ์ชฝ ์์) (์ค๋ฅธ์ชฝ ์์) (๋ฃจํธ)
๊ฐ ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ด์งํธ๋ฆฌ์ ๋ ธ๋์ ๊ฐ์ N(1 ≤ N ≤ 26)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ๋ ธ๋์ ๊ทธ์ ์ผ์ชฝ ์์ ๋ ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋๊ฐ ์ฃผ์ด์ง๋ค. ๋ ธ๋์ ์ด๋ฆ์ A๋ถํฐ ์ฐจ๋ก๋๋ก ์ํ๋ฒณ ๋๋ฌธ์๋ก ๋งค๊ฒจ์ง๋ฉฐ, ํญ์ A๊ฐ ๋ฃจํธ ๋ ธ๋๊ฐ ๋๋ค. ์์ ๋ ธ๋๊ฐ ์๋ ๊ฒฝ์ฐ์๋.์ผ๋ก ํํํ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ ์ํ, ๋์งธ ์ค์ ์ค์ ์ํ, ์ ์งธ ์ค์ ํ์ ์ํํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. ๊ฐ ์ค์ N๊ฐ์ ์ํ๋ฒณ์ ๊ณต๋ฐฑ ์์ด ์ถ๋ ฅํ๋ฉด ๋๋ค.
๋ฌธ์ ํ์ด
- my solution
import sys
def preorder(n,tree,answer): #์ ์ ์ํ
if n!='.':
answer.append(n)
if tree[n][0]!='.':
preorder(tree[n][0],tree,answer)
if tree[n][1]!='.':
preorder(tree[n][1],tree,answer)
def inorder(n,tree,answer): #์ค์ ์ํ
if n!='.':
if tree[n][0]!='.':
inorder(tree[n][0],tree,answer)
answer.append(n)
if tree[n][1]!='.':
inorder(tree[n][1],tree,answer)
def postorder(n,tree,answer): #ํ์ ์ํ
if n!='.':
if tree[n][0]!='.':
postorder(tree[n][0],tree,answer)
if tree[n][1] != '.':
postorder(tree[n][1], tree, answer)
answer.append(n)
if __name__=='__main__':
n=int(input())
tree={}
for i in range(n):
temp=sys.stdin.readline().split()
tree[temp[0]]=[temp[1],temp[2]]
answer=[]
#์ ์ ์ํ
preorder('A', tree, answer)
print(''.join(answer))
answer=[]
#์ค์ ์ํ
inorder('A',tree,answer)
print(''.join(answer))
answer=[]
#ํ์ ์ํ
postorder('A',tree,answer)
print(''.join(answer))
- preorder(๋
ธ๋, tree dict, answer)
: ์ ์ ์ํ - ๋ฃจํธ -> ์ผ์ชฝ ์์ -> ์ค๋ฅธ์ชฝ ์์ - inorder(๋
ธ๋, tree dict, answer)
: ์ค์ ์ํ - ์ผ์ชฝ ์์ -> ๋ฃจํธ -> ์ค๋ฅธ์ชฝ ์์ - postorder(๋
ธ๋, tree dict, answer)
: ํ์ ์ํ - ์ผ์ชฝ ์์ -> ์ค๋ฅธ์ชฝ ์์ -> ๋ฃจํธ - tree dict
: key= ๋ ธ๋
: value= [์ผ์ชฝ ์์ ๋ ธ๋, ์ค๋ฅธ์ชฝ ์์ ๋ ธ๋]
์๊ฐ๐ค
์ฑ ์์ ํธ๋ฆฌ ๋ถ๋ถ์ ๋ณด๊ณ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์๋ค. ์ฑ ์์๋ class๋ก ๊ตฌํํ์ฌ left์ right๋ฅผ ํ์ธํ์์ง๋ง,
์ด ๋ฌธ์ ์์ dict๋ก๋ ํด๊ฒฐํ ์ ์์ ๊ฒ ๊ฐ์ dict๋ก ํด๊ฒฐํ์๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํ ๋ค๋ฅธ ์ฌ๋๋ค์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ฉฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ตฌํํ์๋์ง ํ์ธํด๋ณด๋,
class, dict, list์ ๊ฐ์ด ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ์๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 11048_์ด๋ํ๊ธฐ (0) | 2022.03.09 |
---|---|
[Baekjoon] 1389_์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (0) | 2022.03.08 |
[Baekjoon] 6603_๋ก๋ (0) | 2022.03.03 |
[Baekjoon] 5052_์ ํ๋ฒํธ ๋ชฉ๋ก (0) | 2022.03.02 |
[Baekjoon] 11726_2รn ํ์ผ๋ง (0) | 2022.03.01 |