[BOJ][๐ŸŸก3][๋ฐฑ์ค€#14725] ๊ฐœ๋ฏธ๊ตด

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #14725


๋ฌธ์ œ

๊ฐœ๋ฏธ๋Š”(๋š ๋š ) ์˜ค๋Š˜๋„(๋š ๋š ) ์—ด์‹ฌํžˆ(๋š ๋š ) ย ์ผ์„ ํ•˜๋„ค. ๊ฐœ๋ฏธ๋Š” ์•„๋ฌด๋ง๋„ ํ•˜์ง€ ์•Š์ง€๋งŒ ๋•€์„ ๋ป˜๋ป˜ ํ˜๋ฆฌ๋ฉด์„œ ๋งค์ผ ๋งค์ผ์„ ์‚ด๊ธธ ์œ„ํ•ด์„œ ์—ด์‹ฌํžˆ ์ผ์„ ํ•˜๋„ค. ํ•œ ์น˜ ์•ž๋„(๋š ๋š ) ๋ชจ๋ฅด๋Š”(๋š ๋š ) ํ—˜ํ•œ ์ด ์„ธ์ƒ(๋š ๋š ) ๊ทธ๋ ‡์ง€๋งŒ(๋š ๋š ) ์˜ค๋Š˜๋„ ํ–‰๋ณตํ•œ ๊ฐœ๋ฏธ๋“ค! ์šฐ๋ฆฌ์˜ ์ฒœ์žฌ ๊ณตํ•™์ž ์œค์ˆ˜๋Š” ์ด ๊ฐœ๋ฏธ๋“ค์ด ์™œ ํ–‰๋ณตํ•œ์ง€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ํ–‰๋ณต์˜ ๋น„๊ฒฐ์ด ๊ฐœ๋ฏธ๊ฐ€ ์‚ฌ๋Š” ๊ฐœ๋ฏธ๊ตด์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ ์œค์ˆ˜๋Š” ๊ฐœ๋ฏธ๊ตด์˜ ๊ตฌ์กฐ๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ๋กœ๋ด‡ ๊ฐœ๋ฏธ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๋กœ๋ด‡ ๊ฐœ๋ฏธ๋Š” ์„ผ์„œ๊ฐ€ ์žˆ์–ด ๊ฐœ๋ฏธ๊ตด์˜ ๊ฐ ์ธต์— ๋จน์ด๊ฐ€ ์žˆ๋Š” ๋ฐฉ์„ ๋”ฐ๋ผ ๋‚ด๋ ค๊ฐ€๋‹ค ๋” ์ด์ƒ ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์—†์œผ๋ฉด ๊ทธ ์ž๋ฆฌ์—์„œ ์›€์ง์ด์ง€ ์•Š๊ณ  ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ธ๋‹ค. ์ด ์‹ ํ˜ธ๋กœ ๋กœ๋ด‡ ๊ฐœ๋ฏธ๋Š” ๊ฐœ๋ฏธ๊ตด ๊ฐ ์ธต์„ ๋”ฐ๋ผ ๋‚ด๋ ค์˜ค๋ฉด์„œ ์•Œ๊ฒŒ ๋œ ๊ฐ ๋ฐฉ์— ์ €์žฅ๋œ ๋จน์ด ์ •๋ณด๋ฅผ ์œค์ˆ˜ํ•œํ…Œ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค.

๋กœ๋ด‡ ๊ฐœ๋ฏธ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ•œ ์œค์ˆ˜๋Š” ๊ฐœ๋ฏธ๊ตด ํƒ์‚ฌ๋ฅผ ์•ž๋‘๊ณ  ๋กœ๋ด‡ ๊ฐœ๋ฏธ๋ฅผ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๊ธฐ ์œ„ํ•ด ์œ„ ๊ทธ๋ฆผ์˜ ๊ฐœ๋ฏธ๊ตด์— ๋กœ๋ด‡ ๊ฐœ๋ฏธ๋ฅผ ํˆฌ์ž…ํ–ˆ๋‹ค. (๋กœ๋ด‡ ๊ฐœ๋ฏธ์˜ ์ˆ˜๋Š” ๊ฐ ๊ฐœ๋ฏธ๊ตด์˜ ์ €์žฅ์†Œ๋ฅผ ๋ชจ๋‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ๋„ฃ๋Š”๋‹ค.) ๋‹ค์Œ์€ ๋กœ๋ด‡ ๊ฐœ๋ฏธ๋“ค์ด ์œค์ˆ˜์—๊ฒŒ ๋ณด๋‚ด์ค€ ์ •๋ณด๋‹ค.

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์˜ ๋‚ด๋ถ€์˜ ๋‚ด๋ถ€์˜ ๋‚ด๋ถ€์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•˜์˜€๋‹ค.

  1. ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  2. dictionary๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‚ด๋ถ€์— ํ•ด๋‹น ํ‚ค๊ฐ€ ์ด๋ฏธ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํ‚ค์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ์— ๋‹ค์Œ ๋ฃจํŠธ๋ฅผ ๋„˜๊ธฐ๋ฉฐ ์žฌ๊ท€๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
  3. ๋งŒ์•ฝ ๋‚จ์€ ๋ฃจํŠธ๊ฐ€ ๋”์ด์ƒ ์—†์œผ๋ฉด ๋” ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ข…๋ฃŒํ•œ๋‹ค.
  4. ๋ฃจํŠธ๊ฐ€ ๋‚จ์•„์žˆ๋Š”๋ฐ, ์ด๋ฒˆ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๋‚ด๋ถ€ ๊ตฌ์กฐ๊ฐ€ ์—†๋‹ค๋ฉด ํ•ด๋‹นํ•˜๋Š” ํ‚ค์˜ ๋นˆ dictionary๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ดํ›„ ์žฌ๊ท€๋ฅผ ๋˜ ์ง„ํ–‰ํ•œ๋‹ค.
  5. ๊ฐœ๋ฏธ๊ตด์˜ ๊ตฌ์กฐ๊ฐ€ ๋ชจ๋‘ ์™„์„ฑ๋˜๋ฉด ์žฌ๊ท€์ ์œผ๋กœ ๋‹ค์‹œ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ key๋“ค์„ ํ™•์ธํ•œ๋‹ค.
  6. ํ•ด๋‹น key์— ํ•ด๋‹นํ•˜๋Š” value๊ฐ€ ๋นˆ dictionary, ์ฆ‰ ๊ฐœ๋ฏธ๊ตด์˜ ๋งˆ์ง€๋ง‰์ด๋ผ๋ฉด ์žฌ๊ท€๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ