[BOJ][๐ก3][๋ฐฑ์ค#14725] ๊ฐ๋ฏธ๊ตด
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold III
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
๊ฐ๋ฏธ๋(๋ ๋ ) ์ค๋๋(๋ ๋ ) ์ด์ฌํ(๋ ๋ ) ย ์ผ์ ํ๋ค. ๊ฐ๋ฏธ๋ ์๋ฌด๋ง๋ ํ์ง ์์ง๋ง ๋์ ๋ป๋ป ํ๋ฆฌ๋ฉด์ ๋งค์ผ ๋งค์ผ์ ์ด๊ธธ ์ํด์ ์ด์ฌํ ์ผ์ ํ๋ค. ํ ์น ์๋(๋ ๋ ) ๋ชจ๋ฅด๋(๋ ๋ ) ํํ ์ด ์ธ์(๋ ๋ ) ๊ทธ๋ ์ง๋ง(๋ ๋ ) ์ค๋๋ ํ๋ณตํ ๊ฐ๋ฏธ๋ค! ์ฐ๋ฆฌ์ ์ฒ์ฌ ๊ณตํ์ ์ค์๋ ์ด ๊ฐ๋ฏธ๋ค์ด ์ ํ๋ณตํ์ง ๊ถ๊ธํด์ก๋ค. ํ๋ณต์ ๋น๊ฒฐ์ด ๊ฐ๋ฏธ๊ฐ ์ฌ๋ ๊ฐ๋ฏธ๊ตด์ ์๋ค๊ณ ์๊ฐํ ์ค์๋ ๊ฐ๋ฏธ๊ตด์ ๊ตฌ์กฐ๋ฅผ ์์๋ณด๊ธฐ ์ํด ๋ก๋ด ๊ฐ๋ฏธ๋ฅผ ๋ง๋ค์๋ค. ๋ก๋ด ๊ฐ๋ฏธ๋ ์ผ์๊ฐ ์์ด ๊ฐ๋ฏธ๊ตด์ ๊ฐ ์ธต์ ๋จน์ด๊ฐ ์๋ ๋ฐฉ์ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๋ค ๋ ์ด์ ๋ด๋ ค๊ฐ ์ ์์ผ๋ฉด ๊ทธ ์๋ฆฌ์์ ์์ง์ด์ง ์๊ณ ์ ํธ๋ฅผ ๋ณด๋ธ๋ค. ์ด ์ ํธ๋ก ๋ก๋ด ๊ฐ๋ฏธ๋ ๊ฐ๋ฏธ๊ตด ๊ฐ ์ธต์ ๋ฐ๋ผ ๋ด๋ ค์ค๋ฉด์ ์๊ฒ ๋ ๊ฐ ๋ฐฉ์ ์ ์ฅ๋ ๋จน์ด ์ ๋ณด๋ฅผ ์ค์ํํ ์๋ ค์ค ์ ์๋ค.
๋ก๋ด ๊ฐ๋ฏธ ๊ฐ๋ฐ์ ์๋ฃํ ์ค์๋ ๊ฐ๋ฏธ๊ตด ํ์ฌ๋ฅผ ์๋๊ณ ๋ก๋ด ๊ฐ๋ฏธ๋ฅผ ํ ์คํธ ํด๋ณด๊ธฐ ์ํด ์ ๊ทธ๋ฆผ์ ๊ฐ๋ฏธ๊ตด์ ๋ก๋ด ๊ฐ๋ฏธ๋ฅผ ํฌ์ ํ๋ค. (๋ก๋ด ๊ฐ๋ฏธ์ ์๋ ๊ฐ ๊ฐ๋ฏธ๊ตด์ ์ ์ฅ์๋ฅผ ๋ชจ๋ ํ์ธํ ์ ์์ ๋งํผ ๋ฃ๋๋ค.) ๋ค์์ ๋ก๋ด ๊ฐ๋ฏธ๋ค์ด ์ค์์๊ฒ ๋ณด๋ด์ค ์ ๋ณด๋ค.
KIWI BANANA KIWI APPLE APPLE APPLE APPLE BANANA KIWI
(๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ๋ถํฐ ์์๋๋ก ๋ก๋ด ๊ฐ๋ฏธ๊ฐ ๊ฐ ์ธต๋ง๋ค ์ง๋์จ ๋ฐฉ์ ์๋ ๋จน์ด ์ด๋ฆ์ ๋ปํ๋ค.) ์ค์๋ ๋ก๋ด ๊ฐ๋ฏธ๋ค์ด ๋ณด๋ด์ค ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ฐ๋ฏธ๊ตด์ ๊ตฌ์กฐ๋ฅผ ์์ผ๋ก ๊ทธ๋ ค๋ดค๋ค.
APPLE โAPPLE โBANANA โ-KIWI KIWI โAPPLE โBANANA
(๊ฐ๋ฏธ๊ตด์ ๊ฐ ์ธต์ โโโ ๋ก ๊ตฌ๋ถ์ ํ์๋ค. ๋ ๊ฐ์ ์ธต์ ์ฌ๋ฌ ๊ฐ์ ๋ฐฉ์ด ์์ ๋์๋ ์ฌ์ ์์๊ฐ ์์๋ ๋จน์ด ์ ๋ณด๊ฐ ๋จผ์ ๋์จ๋ค.) ์ฐ๋ฆฌ์ ์ฒ์ฌ ๊ณตํ์ ์ค์๋ ๋ณต์กํ ๊ฐ๋ฏธ๊ตด๋ค์ ์ผ์ผ์ด ์์ผ๋ก ๊ทธ๋ฆฌ๊ธฐ ํ๋ค์ด ์ฐ๋ฆฌ์๊ฒ ๊ทธ๋ ค๋ฌ๋ผ๊ณ ๋ถํํ๋ค. ํ์น ์๋ ๋ชจ๋ฅด๋ ํํ ์ด์ธ์ ๊ทธ๋ ์ง๋ง ์ค๋๋ ํ๋ณตํ ๊ฐ๋ฏธ๋ค! ํ๋ณต์ ๋น๊ฒฐ์ ์๊ธฐ ์ํด ์ค์๋ฅผ ๋์ ๊ฐ๋ฏธ๊ตด์ด ์ด๋ค ๊ตฌ์กฐ์ธ์ง ํ์ธํด๋ณด์.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ๋ก๋ด ๊ฐ๋ฏธ๊ฐ ๊ฐ ์ธต์ ๋ฐ๋ผ ๋ด๋ ค์ค๋ฉด์ ์๊ฒ ๋ ๋จน์ด์ ์ ๋ณด ๊ฐ์ N๊ฐ๊ฐ ์ฃผ์ด์ง๋ค. ย (1 โค N โค 1000) ๋ ๋ฒ์งธ ์ค๋ถํฐ N+1 ๋ฒ์งธ ์ค๊น์ง, ๊ฐ ์ค์ ์์์ ๋ก๋ด ๊ฐ๋ฏธ ํ๋ง๋ฆฌ๊ฐ ๋ณด๋ด์ค ๋จน์ด ์ ๋ณด ๊ฐ์ K๊ฐ ์ฃผ์ด์ง๋ค. (1 โค K โค 15) ๋ค์ K๊ฐ์ ์ ๋ ฅ์ ๋ก๋ด ๊ฐ๋ฏธ๊ฐ ์ผ์ชฝ๋ถํฐ ์์๋๋ก ๊ฐ ์ธต๋ง๋ค ์ง๋์จ ๋ฐฉ์ ์๋ ๋จน์ด ์ ๋ณด์ด๋ฉฐ ๋จน์ด ์ด๋ฆ ๊ธธ์ด t๋ (1 โค t โค 15) ์ด๋ค.ย
์ถ๋ ฅ
๊ฐ๋ฏธ๊ตด์ ์๊ฐํ๋ ๊ตฌ์กฐ๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ. ๊ฐ๋ฏธ๊ตด์ ๊ฐ ์ธต์ โโโ ๋ก ๊ตฌ๋ถํ๋ฉฐ, ๊ฐ์ ์ธต์ ์ฌ๋ฌ๊ฐ์ ๋ฐฉ์ด ์์ ๋์๋ ์ฌ์ ์์๊ฐ ์์๋ ๋จน์ด ์ ๋ณด๊ฐ ๋จผ์ ๋์จ๋ค.
์์
์์ 1
์ ๋ ฅ
3
2 B A
4 A B C D
2 A C
์ถ๋ ฅ
A
--B
----C
------D
--C
B
--A
์์ 2
์ ๋ ฅ
4
2 KIWI BANANA
2 KIWI APPLE
2 APPLE APPLE
3 APPLE BANANA KIWI
์ถ๋ ฅ
APPLE
--APPLE
--BANANA
----KIWI
KIWI
--APPLE
--BANANA
My Sol
import sys
input = sys.stdin.readline
from collections import deque
def main(position, Q):
if not Q: return
front = Q.popleft()
root = position.get(front, dict())
if not root:
position[front] = dict()
main(position[front], Q)
def check(position, depth):
for k in sorted(position.keys()):
print(f"{'--'*depth}{k}")
if position[k]:
check(position[k], depth+1)
GMG = dict()
T = int(input())
for _ in range(T):
N, *roots = input().split()
main(GMG, deque(roots))
check(GMG, 0)
dictionary์ ์ฌ๊ท๋ฅผ ์ด์ฉํ์ฌ ํ์๋ค. ๋ง์น JSON์ ๋ด๋ถ์ ๋ด๋ถ์ ๋ด๋ถ์ ๋ด๋ถ ๊ตฌ์กฐ์ธ ๊ฒ์ฒ๋ผ ์ฒ๋ฆฌํ์๋ค.
- ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ค.
- dictionary๋ฅผ ์ด์ฉํ์ฌ ๋ด๋ถ์ ํด๋น ํค๊ฐ ์ด๋ฏธ ์๋ค๋ฉด ํด๋น ํค์ ๋ด๋ถ ๊ตฌ์กฐ์ ๋ค์ ๋ฃจํธ๋ฅผ ๋๊ธฐ๋ฉฐ ์ฌ๊ท๋ฅผ ์งํํ๋ค.
- ๋ง์ฝ ๋จ์ ๋ฃจํธ๊ฐ ๋์ด์ ์์ผ๋ฉด ๋ ๋ด๋ ค๊ฐ ์ ์์ผ๋ฏ๋ก ์ข ๋ฃํ๋ค.
- ๋ฃจํธ๊ฐ ๋จ์์๋๋ฐ, ์ด๋ฒ ํค์ ํด๋นํ๋ ๋ด๋ถ ๊ตฌ์กฐ๊ฐ ์๋ค๋ฉด ํด๋นํ๋ ํค์ ๋น dictionary๋ฅผ ์๋ก ๋ง๋ค์ด์ฃผ๊ณ ์ดํ ์ฌ๊ท๋ฅผ ๋ ์งํํ๋ค.
- ๊ฐ๋ฏธ๊ตด์ ๊ตฌ์กฐ๊ฐ ๋ชจ๋ ์์ฑ๋๋ฉด ์ฌ๊ท์ ์ผ๋ก ๋ค์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ key๋ค์ ํ์ธํ๋ค.
- ํด๋น key์ ํด๋นํ๋ value๊ฐ ๋น dictionary, ์ฆ ๊ฐ๋ฏธ๊ตด์ ๋ง์ง๋ง์ด๋ผ๋ฉด ์ฌ๊ท๋ฅผ ์ข ๋ฃํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ