1. ๋ฌธ์ ์์ฝ
์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ ์ค, ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธํ๋ ๋ฌธ์ ์ด๋ค.
์ ๋์ด๊ฐ ์กด์ฌํ๋ฉด False๋ฅผ, ๊ทธ๋ ์ง ์์ผ๋ฉด True๋ฅผ ๋ฐํํ๋ค.
2. ํ์ด 1: ์ ๋ ฌ(Sorting) ํ์ฉ
def solution(phone_book):
phone_book.sort() # ๋ฌธ์์ด ๊ธฐ์ค ์ ๋ ฌ
for i in range(1, len(phone_book)):
if phone_book[i].startswith(phone_book[i - 1]):
return False
return True
๐ ์ ๋ ฌ ์ ์ธ์ ์์๋ง ๋น๊ตํ๋ ์ด์ : ๋ฌธ์์ด ์ ๋ ฌ์ ์ฌ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ฏ๋ก, ์ ๋์ฌ ๊ด๊ณ์ธ ๋ฒํธ๋ค์ ๋ฐ๋์ ์๋ก ๋ถ์ด์ ์ ๋ ฌ๋๋ค. (์: "119", "1195")
๐ startswith vs in: in์ ์ค๊ฐ์ ํฌํจ๋ ๊ฒฝ์ฐ๋ ์ฐพ์๋ด์ง๋ง, startswith๋ ์ค์ง ์ ๋์ฌ(์์ ๋ถ๋ถ)๋ง ํ์ธํ๋ฏ๋ก ๋ฌธ์ ์๋์ ์ ํํ ๋ถํฉํ๋ค.
3. ํ์ด 2: ํด์(Hash) ํ์ฉ
def solution(phone_book):
hash_map = set(phone_book)
for phone in phone_book:
for i in range(1, len(phone)):
if phone[:i] in hash_map: # O(1) ์๊ฐ ๋ณต์ก๋ ์กฐํ
return False
return True
๐ ํด์์ ํต์ฌ: ๊ฐ ๋ฒํธ๋ฅผ ์ํํ๋ฉฐ ๊ฐ๋ฅํ ๋ชจ๋ ์ ๋์ฌ ์ฌ๋ผ์ด์ฑ(phone[:i]) ๊ฒฐ๊ณผ๊ฐ set์ ์กด์ฌํ๋์ง O(1)์ ์๋๋ก ํ์ธํ๋ค.
4. ๐ ๋ ๋ฐฉ์ ๋น๊ต
| ๊ตฌ๋ถ | ์ ๋ ฌ ๋ฐฉ์ | ํด์ ๋ฐฉ์ |
|---|---|---|
| ์๊ฐ ๋ณต์ก๋ | O(nlog n) | O(nm) |
| ํน์ง | ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ | ๋ฌธ์ ์๋(ํด์)์ ์ถฉ์คํจ |
* n: ์ ํ๋ฒํธ ๊ฐ์, m: ์ ํ๋ฒํธ์ ํ๊ท ๊ธธ์ด
'๐งฉ Algorithm > [Programmers] ์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ํฌ์ผ๋ชฌ (0) | 2026.03.18 |
|---|---|
| [Programmers/์๊ณ ๋ฆฌ์ฆ ๊ณ ๋์ KIT] ์์ฃผํ์ง ๋ชปํ ์ ์ (0) | 2026.03.18 |