42577. ์ ํ๋ฒํธ ๋ชฉ๋ก
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ์ ํ๋ฒํธ ๋ชฉ๋ก
๋ฌธ์ ์ ํ | ๋์ด๋ | ๊ฑธ๋ฆฐ ์๊ฐ | ํด๊ฒฐ ์ ๋ฌด(โ /โ) |
---|---|---|---|
ํด์ | lv.1 | 30๋ถ | โ |
#
์ค๊ณ ๋ฐฉ๋ฒํด์๋ก ํ์ดํ๋ ๋ฒ์ด ๋ ์ค๋ฅด์ง ์์์.
phone_book
์ ๋จผ์ ์ ๋ ฌํจ.['119', '97674223', '1195524421'] -> ['119', '1195524421', '97674223']
๋ก์ ๋ ฌ๋จ.
sort
๋ ๋ฐฐ์ด์reduce
๋ก ์ํํ๋ฉฐ ํ์ฌ ๊ฐ์ด ๊ทธ ์ด์ ๊ฐ์ผ๋กstartsWith
ํ๋์ง ํ๋จํจ.startsWith
์ดtrue
๋ผ๋ฉดanswer
๋ฅผfalse
๋ก ๋ฐ๊พธ๊ณreduce
๋ฅผearly break
ํจ.
#
์ฝ๋#
JavaScriptfunction 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;}
#
Pythondef 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๋ฅผ ์ง์ํ์ง ์๋ ๋ฌธ์ ๋ผ, ํ์ด์ฌ์ผ๋ก ๋จผ์ ํ์์ด์ผ ํ์.