๋ฌธ์ ์ค๋ช
์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ ์ค, ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธํ๋ ค ํฉ๋๋ค.
์ ํ๋ฒํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ๊ตฌ์กฐ๋ ์ ํ๋ฒํธ๋ ์์์ด์ ์ ํ๋ฒํธ์ ์ ๋์ฌ์
๋๋ค.
- ๊ตฌ์กฐ๋ : 119
- ๋ฐ์ค์ : 97 674 223
- ์ง์์ : 11 9552 4421
์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ๋ฅผ ๋ด์ ๋ฐฐ์ด phone_book ์ด solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด๋ค ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉด false๋ฅผ ๊ทธ๋ ์ง ์์ผ๋ฉด true๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- phone_book์ ๊ธธ์ด๋ 1 ์ด์ 1,000,000 ์ดํ์
๋๋ค.
- ๊ฐ ์ ํ๋ฒํธ์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ ํ๋ฒํธ๊ฐ ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์์
์
์ถ๋ ฅ ์ #1
์์์ ์ค๋ช
ํ ์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ฌ์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก, ๋ต์ true์
๋๋ค.
์
์ถ๋ ฅ ์ #3
์ฒซ ๋ฒ์งธ ์ ํ๋ฒํธ, “12”๊ฐ ๋ ๋ฒ์งธ ์ ํ๋ฒํธ “123”์ ์ ๋์ฌ์
๋๋ค. ๋ฐ๋ผ์ ๋ต์ false์
๋๋ค.
ํ์ด ์ฝ๋
def solution(phone_book):
phone_book.sort(key=len)
hash_table = {}
min_len = len(phone_book[0])
for p in phone_book:
for i in range(min_len, len(p)):
temp = p[:i]
if temp in hash_table:
return False
hash_table[p] = True
return True
์ฌ์ค ํด์๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒจ์ฐ ํต๊ณผ๋๊ณ , ์๋๋ Trie ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ผ๋ก ์๊ณ ์๋ค.
์ผ๋จ, ์ ํ๋ฒํธ๋ถ๋ฅผ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ํ๋ค.
์๋ก์ด ๋ค์ด์จ ์ ํ๋ฒํธ์ ์ ๋์ฌ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฌ๋ผ์ด์ฑ์ ํ ๊ฒ์ธ๋ฐ, ๊ฐ์ฅ ์งง์ ์ ํ๋ฒํธ๋ถํฐ ๋น๊ตํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ min_len์ด๋ผ๋ ๋ณ์๋ก ์ ์ฅํด๋๋ค.
์ผ๋จ N์ด 100๋ง์ด๊ณ , ๋ด๋ถ์ for๋ฌธ์ ์ต๋ 20ํ ๋ฐ๋ณต๋๋ค.
๋ฐ๋ผ์ 2์ค for๋ฌธ ๋ด์ ๋ก์ง์ด ๋ณต์กํ๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ ํฐ์ง ์ ๋ฐ์ ์๋ค.
ํด์์ธ ๋์ ๋๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด, in ์ฐ์ฐ์ด O(1)์ด๋ฏ๋ก, ์๊ฐ๋ณต์ก๋๋ฅผ ๋ง์ด ์ ๊ฐํ ์ ์๋ค.
+ phone_book.sort()๋ก ํ๋ฉด, ํ ์คํธ ์ผ์ด์ค 2๊ฐ๋ฅผ ํต๊ณผํ์ง ๋ชปํ๋ค. ์ฌ์ค key=len์ผ๋ก ํ๋ ๊ทธ๋ฅ sort๋ฅผ ํ๋ ๋ณ ์ฐจ์ด๊ฐ ์์ ๊ฒ ๊ฐ์๋๋ฐ, ์ฐจ์ด๊ฐ ์๊ธฐ๋ ๊ฒ์ ์์ง ์ดํดํ์ง ๋ชป ํ๋ค ใ ใ
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๊ฒ ๋๋ฒ (level2, python) (0) | 2022.09.12 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋คํธ์ํฌ (level3, python) (0) | 2022.09.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (level2, python) (0) | 2022.09.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฆฐํฐ (level2, python) (0) | 2022.09.12 |
[ํ๋ก๊ทธ๋๋จธ์ค] [1์ฐจ] ๋ด์ค ํด๋ฌ์คํฐ๋ง (level2, python) (0) | 2022.09.12 |