반응형
파이썬으로 코딩테스트 연습하기 :: 프로그래머스 > 해시 > 전화번호 목록
https://programmers.co.kr/learn/courses/30/lessons/42577
Solution
def solution(phone_book):
phone_book.sort()
answer = True
for i in range(len(phone_book)-1) :
x = phone_book[i]
y = phone_book[i+1]
x_len = len(x)
y_len = len(y)
if x_len <= y_len :
if x in y[:x_len] :
answer =False
break
else :
if y in x[:y_len] :
answer = False
break
return answer
다른 사람의 풀이
이 문제에서 가장 중요한건 sort()다.
sort 없이 그냥 for문 돌리면 효율성에서 통과하지 못한다.
zip() 으로 phoneBook과 phoneBook[1:] 을 묶어주면
phoneBook[i]와 phoneBook[i+1]을 비교해 줄 필요없이 for문 자체에서 인덱싱이 가능하다.
내부 원리는 같으나, 코드가 더 깔끔해진다.
String.startwith() 함수는 기억해두면 좋을 것 같다.
반응형
'코딩테스트 연습 > 프로그래머스' 카테고리의 다른 글
[Python - 프로그래머스] 로또의 최고 순위와 최저 순위 (0) | 2022.03.16 |
---|---|
[Python - 프로그래머스] 2022 KAKAO BLIND RECRUITMENT > 신고 결과 받기 (0) | 2022.03.16 |
[프로그래머스 - Python] 완주하지 못한 선수 (0) | 2022.03.11 |
[프로그래머스 - Python] 코딩테스트 연습 > 월간 코드 챌린지 시즌1 > 삼각 달팽이 in python (0) | 2021.01.19 |
[프로그래머스 - Python] 코딩테스트 연습 > 2020 카카오 인턴십 > 키패드 누르기 (0) | 2021.01.19 |