๐ ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42577
๋ฌธ์ ์ค๋ช
์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ ์ค, ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธํ๋ ค ํฉ๋๋ค.
์ ํ๋ฒํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ๊ตฌ์กฐ๋ ์ ํ๋ฒํธ๋ ์์์ด์ ์ ํ๋ฒํธ์ ์ ๋์ฌ์
๋๋ค.
- ๊ตฌ์กฐ๋ : 119
- ๋ฐ์ค์ : 97 674 223
- ์ง์์ : 11 9552 4421
์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ๋ฅผ ๋ด์ ๋ฐฐ์ด phone_book ์ด solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด๋ค ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉด false๋ฅผ ๊ทธ๋ ์ง ์์ผ๋ฉด true๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- phone_book์ ๊ธธ์ด๋ 1 ์ด์ 1,000,000 ์ดํ์
๋๋ค.
- ๊ฐ ์ ํ๋ฒํธ์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ ๋๋ค.
- ๊ฐ์ ์ ํ๋ฒํธ๊ฐ ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์์
phone_bookreturn
["119", "97674223", "1195524421"] | false |
["123","456","789"] | true |
["12","123","1235","567","88"] | false |
์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
์์์ ์ค๋ช
ํ ์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ฌ์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฏ๋ก, ๋ต์ true์
๋๋ค.
์
์ถ๋ ฅ ์ #3
์ฒซ ๋ฒ์งธ ์ ํ๋ฒํธ, “12”๊ฐ ๋ ๋ฒ์งธ ์ ํ๋ฒํธ “123”์ ์ ๋์ฌ์
๋๋ค. ๋ฐ๋ผ์ ๋ต์ false์
๋๋ค.
โ๏ธ ํ์ด (2021.08.03)
์ฒซ ๋ฒ์งธ ์ฝ๋
def solution(phone_book):
phone_book.sort()
for i in range(len(phone_book)-1):
if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
return False
return True
์ด๊ฒ๋ ๋ฌผ๋ก ๋ญ ์ฐธ๊ณ ํ๋ฉด์ ๊ฒจ์ฐ๊ฒจ์ฐ ์ง ์ฝ๋๋ค. ํ....ใ
ํ๋ ๋ฐฐ์ด ๊ฒ์ ํ์ด์ฌ์์ ๋ฐฐ์ด ์ ๋ ฌ์ ํ ์ ์๋ค๋ ์ ์ด๋ค.
list.sort()
sort()๋ฅผ ์ฐ๋ฉด ์ซ์ ํฌ๊ธฐ๋ก ์ ๋ ฌ๋๋๋ฐ, ๋ฌธ์์ด์ด๋ผ๋ ๊ฐ์ ํฌ๊ธฐ๋๋ก ์ ๋ ฌํด์ค๋ค. ์๋ฐ๋ฅผ ์๊ฐํ๋ฉด ์ถฉ๊ฒฉ์ ์ด๋ค(ใ ใ )
์๋ฅผ ๋ค์ด ["123", "99", "125", "1234", "22456"]์ด ์๋ค๊ณ ํ๋ฉด ["123", "1234", "125", "22456", "99"] ์ด๋ ๊ฒ ์ ๋ ฌ์ด ๋๋ค.
list.sort(key=len)
key๋ก len, ์ฆ ๊ธธ์ด๋ฅผ ์ฃผ๋ฉด ๊ธธ์ด๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํด์ค๋ค. ์์ ์๋ฅผ ๋ค์๋ฉด ["99", "123", "125", "1234", "22456"]์ด ๋๊ฒ ๋ค.
์๋ฌดํผ ์ด๊ฑด ํ๋ ๋ฐฐ์๊ฐ ์ ์ด๊ณ , phone_book์ ๊ฐ์ ํฌ๊ธฐ๋๋ก ์ ๋ ฌํ๋ฉด, ๋ง์ฝ ๋ค์ ์ซ์๊ฐ ์์ ์ซ์๋ฅผ ์ ๋์ด๋ก ๊ฐ์ง๊ณ ์์ ๋ ๋ฌด์กฐ๊ฑด ์ธ์ ํด ์์ ์ ๋ฐ์ ์๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ธ์ ๊ฐ๋ง ๋ณด๋ฉด ๋๋ค...
Hash ํจ์ ์ด์ฉ
def solution(phone_book):
hashes = {} #ํน์ dict()
for phone in phone_book:
hashes[hash(phone)] = phone;
for phone in phone_book:
temp = ""
for nums in phone:
temp = temp + nums
if hash(temp) in hashes and temp != phone:
return False
return True
์ด๊ฑด ๋ฐ๋ก ์ด์ ํ์๋ '์์ฃผํ์ง ๋ชปํ ์ ์' ๋ฌธ์ ์์ ๋ํ๋ ํด์ ํ์ด์๋ ๋น์ทํ๋ค.
๋ฐฐ์ด์ ํ๋ํ๋ ์กด์ฌํ๋์ง ํ์ธํ๋ ๊ฒ๋ณด๋ค, ํน์ Hash๊ฐ์ด ํด์์ ์๋๋!๋ฅผ ๋ณด๋ ๊ฒ์ด ๋ ๋น ๋ฅธ ๋ฏ ํ๋ค
์๋ฌดํผ ์ด๊ฒ๋ ์ด๋ ดํ์ด ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ด๊ธด ํ๋๋ฐ ๋๋ฌด ๊ฐ๋ ๊ฒ ๊ฐ์์ ์ํ๋๋...๋ง๋ ํ์ด์๋๋ณด๋ค.
์ด์ค for๋ฌธ์ ๋์์ ํจ์จ์ฑ์์ ํ๋ฝํ์ง ์๋?ํ๋๋ฐ Hash ๋๋ถ์ธ์ง ์๊ทธ๋ฌ๋ ๊ฒ ๊ฐ์๋ค. ์๋ค๊ฐ๋ ๋ชจ๋ฅผ ์ฝํ ...
zip ํจ์ ์ด์ฉ
def solution(phoneBook):
phoneBook.sort()
for p1, p2 in zip(phoneBook, phoneBook[1:]):
# phoneBook์ ๋ง์ง๋ง ์์๋ ๋ฌถ์ด๋๊ฒ ์์ด ์ฌ๋ผ์ง๋ค.
print(p1, p2)
if p2.startswith(p1):
return False
return True
zip..zip...์ด์ ๋ถํฐ ๋๋ฅผ ์์ญ๋ฌ์ญํ๊ฒ ๋ง๋๋ zip!
zip์ ๊ฐ์ ์์น์ ์๋ ๊ฒ๋ค๋ผ๋ฆฌ ๋ฌถ์ด์ฃผ๋ ํจ์๋ก ๋ณด์ธ๋ค.
arr1 = ["apple", "banana", "crocodile"]
arr2 = ["hello", "world"]
arr3 = ["blue", "yellow"]
for zip in zip(arr1, arr2, arr3):
print(zip)
# ์ถ๋ ฅ ๊ฒฐ๊ณผ
# ('apple', 'hello', 'blue')
# ('banana', 'world', 'yellow')
์์ฒ๋ผ ์์๋ฅผ ์ง ๋๋ ค๋ดค๋๋ ํจ์ฌ ์ดํด๊ฐ ์ฝ๋ค.
๊ฐ์ ์์น๋ผ๋ฆฌ ๋ฌถ์ด๋๋ฐ, ๋ง์ฝ ๊ฐ์ ์์น์ ์กด์ฌํ์ง ์๋ ์์("crocodile")๊ฐ ์๋ค๋ฉด, ์ด ์์๋ ํ๋ฐ๋์ด ๋ฒ๋ฆฐ๋ค.
for๋ฌธ์์ zip๋ง๊ณ ์ธ ๋ณ์ a,b,c๋ฅผ ๋๋ค๋ฉด ํํ๋ก ๋ฌถ์ธ ๊ฐ ์์๋ค์ด ํ๋์ฉ a,b,c์ ๋ค์ด๊ฐ๊ฒ ๋๋ค.
์ด ์ฝ๋์์ ์๊ณ ๊ฐ์ผํ ๊ฐ์ฅ ์ค์ํ ํจ์!!!!
startswith() ํจ์ ์ด์ฉ
์ธ์์ ์ด๋ฐ ํจ์๊ฐ ์๋ค๋...๋ฐ๋ก ๋์ค์ ์ ๋ฆฌ๋ฅผ ํ๊ฒ ์ง๋ง ๊ฐ๋จํ๊ฒ๋ง ๋งํ์๋ฉด ํน์ ๋ฌธ์์ด์ด ํน์ ๋ฌธ์๋ก ์์ํ๋์ง๋ฅผ ํ์ธํ ์ ์๋ ํจ์์ด๋ค. True๋ False๋ฅผ ๋ฐํํ๋ค.
str = "๊ฐ๋๋ค๋ผ๋ง๋ฐํ"
>> str.startswith("๊ฐ")
>> True
>> str.startswith("๋ง", 4) // ์์ ์ธ๋ฑ์ค ์ง์ ๊ฐ๋ฅ
>> True
์์ ๋น์ทํ๊ฒ ๋ฌธ์์ด์์ ํน์ ์กฐ๊ฑด์ ์ฐพ๋ ํจ์๋ก๋ find(), endswith()์ด ์์ง๋ง ๋์ค์ ๋ค๋ค๋ณด๊ฒ ๋ค.....
๐โ๏ธ ์๊ฒฌ (2021.08.03)
ํด...์ง์ง ์ฝํ ๋๋ฌด ์ด๋ ต๋ค. ๋ฌด์๋ณด๋ค ๋ด๊ฐ ๋ชปํ๋๊ฑธ ๋จ๋ค์๊ฒ ๋ณด์ฌ์ค์ผ ํ๋๊น ์ชฝํ๋ฆฐ๋คใ .ใ
์๊ทน์ ํ์คํ ๋์ด์ ์ด๋ ๊ฒ ๋งค์ผ ๋ฐค์ ๊ณ ์ํ๊ฒ ๋๊ธด ํ์ง๋ง, ์ ์ ์ ์ผ๋ก ํ๋ค๋ค...
๋ด๊ฐ ์ง ์ฝ๋๋ ํ๋ ์์ด์ ์ ๋ ๊ฒ 66์ ์ ๋ง์๋ ์ฝ๋๋ ์ง๊ธ ์ฐพ์ผ๋ ค๋ ๊ธฐ์ต๋์ง ์๋๋ค.
๋ค๋ง if๋ฌธ์์ ๋ง์ผ๋ฉด ๋ฐ๋ก returnํ๊ฒ ํ๋๋ 10์ ์ด ์ฌ๋๋ ๊ธฐ์ต์ด ์๋ค.
๋ฆฌํด...๊ผฌ๋ฐ๊ผฌ๋ฐ ์์ํค์. ์ํ ๊ณ์ฐ ์ํค์ง ๋ง๊ณ .
๐ป ์์ค์ฝ๋: ํ์ด์ฌ(Python)
(1)
def solution(phone_book):
phone_book.sort()
answer = True
for i in range(len(phone_book)-1):
if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
answer = False
return answer
(2)
def solution(phone_book):
answer = True
dic = {}
for phone_number in phone_book:
dic[phone_number] = 1
for phone_number in phone_book:
temp = ""
for number in phone_number:
temp += number
if temp in dic and temp != phone_number:
answer = False
return answer
๐ ๐ ๐
๏ผฐ๏ฝ๏ฝ๏ฝ๏ฝ ๏ฝ ๏ผข๏ฝ ๏ผณ๏ผก๏ผน
๐๐ฉ๐ข๐ฏ๐ฌ๐ด ๐ง๐ฐ๐ณ ๐ณ๐ฆ๐ข๐ฅ๐ช๐ฏ๐จ