42577. ์ ํ๋ฒํธ ๋ชฉ๋ก
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ ํ๋ฒํธ ๋ชฉ๋ก
| ๋ฌธ์ ์ ํ | ๋์ด๋ | ๊ฑธ๋ฆฐ ์๊ฐ | ํด๊ฒฐ ์ ๋ฌด(โ /โ) |
|---|---|---|---|
| ํด์ | lv.1 | 30๋ถ | โ |
์ค๊ณ ๋ฐฉ๋ฒ#
ํด์๋ก ํ์ดํ๋ ๋ฒ์ด ๋ ์ค๋ฅด์ง ์์์.
phone_book์ ๋จผ์ ์ ๋ ฌํจ.['119', '97674223', '1195524421'] -> ['119', '1195524421', '97674223']๋ก์ ๋ ฌ๋จ.
sort๋ ๋ฐฐ์ด์reduce๋ก ์ํํ๋ฉฐ ํ์ฌ ๊ฐ์ด ๊ทธ ์ด์ ๊ฐ์ผ๋กstartsWithํ๋์ง ํ๋จํจ.startsWith์ดtrue๋ผ๋ฉดanswer๋ฅผfalse๋ก ๋ฐ๊พธ๊ณreduce๋ฅผearly breakํจ.
์ฝ๋#
JavaScript#
function solution(phone_book) { let answer = true;
phone_book .sort() .slice(0) .reduce((short, long, _, arr) => { if (long.startsWith(short)) { answer = false; arr.splice(1); } return long; });
return answer;}Python#
def solution(phone_book): phone_book = sorted(phone_book)
for short, long in zip(phone_book, phone_book[1:]): if long.startswith(short): return False return True์๊ฐ ๋ณต์ก๋#
sort() : O(NlogN) reduce : O(N)
O(NlogN) + O(N) ๋ง๋..?
์ด๋ ค์ ๋ ์ #
ํด์๋ก ๋ถ๋ฅ๋์ด ์์ด์ ์๊ฐ์ด ํด์๋ก ๊ณ ์ ๋์๋๋ฐ, ํด์๋ก ํธ๋ ๋ฐฉ๋ฒ์ด ์ฝ๊ฒ ์๋ ์ฌ๋์.
ํ๋ก๊ทธ๋๋จธ์ค์์ JS๋ฅผ ์ง์ํ์ง ์๋ ๋ฌธ์ ๋ผ, ํ์ด์ฌ์ผ๋ก ๋จผ์ ํ์์ด์ผ ํ์.