-
[๋ฐฑ์ค] 14725 ๊ฐ๋ฏธ๊ตด with PythonPS 2021. 11. 21. 17:49728x90๋ฐ์ํ
๐ BOJ 14725 ๊ฐ๋ฏธ๊ตด
๐ก ์กฐ๊ฑด
์ฒซ ๋ฒ์งธ ์ค์ ๋ก๋ด ๊ฐ๋ฏธ๊ฐ ๊ฐ ์ธต์ ๋ฐ๋ผ ๋ด๋ ค์ค๋ฉด์ ์๊ฒ ๋ ๋จน์ด์ ์ ๋ณด ๊ฐ์ N >>
(1 โค N โค 1000)
๋ ๋ฒ์งธ ์ค๋ถํฐ N+1 ๋ฒ์งธ ์ค๊น์ง, ๊ฐ ์ค์ ์์์ ๋ก๋ด ๊ฐ๋ฏธ ํ๋ง๋ฆฌ๊ฐ ๋ณด๋ด์ค ๋จน์ด ์ ๋ณด ๊ฐ์ K >>(1 โค K โค 15)
๋ค์ K๊ฐ์ ์ ๋ ฅ์ ๋ก๋ด ๊ฐ๋ฏธ๊ฐ ์ผ์ชฝ๋ถํฐ ์์๋๋ก ๊ฐ ์ธต๋ง๋ค ์ง๋์จ ๋ฐฉ์ ์๋ ๋จน์ด ์ ๋ณด์ด๋ฉฐ ๋จน์ด ์ด๋ฆ ๊ธธ์ด t >>(1 โค t โค 15)
ํธ๋ผ์ด(Trie) ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์ .
๐ฅ ์์ค ์ฝ๋
from sys import stdin n = int(stdin.readline()) class Trie: def __init__(self): self.root = {} def insert(self, s): cur_node = self.root for c in s: if c not in cur_node: cur_node[c] = {} cur_node = cur_node[c] cur_node['*'] = {} def print_trie(self, l, cur_node=None): if l == 0: cur_node = self.root for c in sorted(cur_node.keys()): if c != '*': print('--' * l, c, sep="") self.print_trie(l + 1, cur_node[c]) trie = Trie() for _ in range(n): data = list(stdin.readline().split()) trie.insert(data[1:]) trie.print_trie(0)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
4 2 KIWI BANANA 2 KIWI APPLE 2 APPLE APPLE 3 APPLE BANANA KIWI
์คํ๊ฒฐ๊ณผ
APPLE --APPLE --BANANA ----KIWI KIWI --APPLE --BANANA
โจ๏ธ ๋ฌธ์ ํ์ด
- trie ํด๋์ค๋ฅผ ์์ฑํ๊ณ , ๋ก๋ด ๊ฐ๋ฏธ๊ฐ ๋ณด๋ด์ค ๋ฐ์ดํฐ๋ฅผ
Trie
์ ๋ด๋๋ค.
- ํด๋์ค ๋ด
insert
ํจ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฐจ๋ก๋๋ก ๋ฃ๋๋ค.cur_node
๋ณ์๋ฅผroot
๋ก ์ฃผ๊ณ , ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค๋ฉดcur_node
๋ฅผ ๊ฐฑ์ ,
๋ฐ์ดํฐ๊ฐ ์กด์ฌ ํ์ง ์๋๋ค๋ฉด, ์ถ๊ฐํด์ค๋ค.
์ ๋ ฅ ์์ ๋ฐ๋ณต๋ฌธ์ด ๋์ด ๋ฌ๋ค๋ฉด, ๋ ธ๋์ ๋ง์ง๋ง์'*'
๋ก ์ ์ฅํด์ค๋ค.
- ๋ง์ง๋ง ๋ผ์ธ์์ ํด๋์ค ๋ด ์ถ๋ ฅ ํจ์์ธ,
print_trie
๋ฅผ0
์ ๋ฃ์ด ์คํํด์ค๋ค.l
์ด0
์ด๋ผ๋ฉด,cur_node
๋ฅผroot
๋ก ์ค์ ํด์ค๋ค.cur_node
์ ํค ๊ฐ์ ์ ๋ ฌํ ๋ค, ๋ฐ๋ณต๋ฌธ์ ํตํด ์ถ๋ ฅํด์ค๋ค
์ฌ๊ธฐ์ ๋ ธ๋์ ํค ๊ฐ์ด'*'
์ด๋ผ๋ฉด ์ถ๋ ฅ์ ํ์ง ์๊ณ ,print_trie
ํจ์๋ฅผ ์ฌ๊ท ํธ์ถํด์ค๋ค.
์ด๋,l
์ ๊ฐ์ + 1,cur_node
๋ c๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฃ์ด์ค๋ค.
- ๋ง์ฝ
cur_node
์ ํค ๊ฐ์ด'*'
์ด ์๋๋ผ๋ฉด'--'
๋ฌธ์์ด์l
๋งํผ ์ถ๋ ฅํ ๋ค, ๋ ธ๋๋ฅผ ์ถ๋ ฅํ๋ค
๐พ ๋๋์
- Trie ์๋ฃ๊ตฌ์กฐ๋ฅผ ๊ณต๋ถํด์ผ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
- ์ฒ์๋ณด๋ ์๋ฃ๊ตฌ์กฐ์ด๊ธฐ์ ์ดํดํ๋๋ฐ์๋ ์๊ฐ์ด ๊ฑธ๋ ธ๊ณ , ๋ถ์กฑํ ์ ์ ์๊ฒ ๋์๋ค.
- ๋ก์ง์ ๋ณด๋ฉด์ ๊ณต๋ถํด์ผํ ๊ฒ์ ๋ค์ ํ๋ฒ ์ ๋ฆฌํ๊ณ ๊ณต๋ถํด์ผ๊ฒ ๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] ํ๋ณดํค with Python (0) 2021.11.27 [Programmers] ์คํ์ฑํ ๋ฐฉ with Python (0) 2021.11.21 [๋ฐฑ์ค] 13334 ์ฒ ๋ก with Python (0) 2021.10.25 [๋ฐฑ์ค] 12100 2048(easy) with Python (0) 2021.10.25 [๋ฐฑ์ค] 1043 ๊ฑฐ์ง๋ง with Python (0) 2021.10.20