https://school.programmers.co.kr/learn/courses/30/lessons/42577
처음에는 이렇게 풀었다.
1. 리스트 문자열을 정렬 (아래와 같이)
["12","888","567","1235","123"] -> ['12', '123', '1235', '567', '888']
2. 인접한 문자열끼리 비교하여 앞 문자열이 뒷 문자열에 포함되어있는가를 확인
def solution(phone_book):
phone_book.sort()
for i in range(len(phone_book) - 1):
if phone_book[i] in phone_book[i + 1]:
return False
return True
하지만 위와 같이 풀면 단 하나의 테스트케이스를 통과하지 못해 오답이 뜬다.. ㅠ
사실 아직도 뭐가 반례 케이스인지 모르겠다.
하지만.. 내가 쓴 코드는 결국 앞 문자열이 뒷 문자열에 포함되어있는가를 확인한 것 뿐이지, 접두사로 포함되어 있는지 확인한 것이 아니다.
검색을 좀 해보니 'startswith'라는 메소드가 있었다. 이는 문자열이 특정 접두어로 시작하는지 확인하는 메서드다.
def solution(phone_book):
phone_book.sort()
for i in range(len(phone_book) - 1):
if phone_book[i + 1].startswith(phone_book[i]):
return False
return True
이를 이용하여 문제를 푸니 정답처리!
다른 사람의 풀이를 봐도 내 풀이가 가장 맘에 든다.
'Algorithm > 코딩테스트 고득점 Kit' 카테고리의 다른 글
[고득점 Kit / 스택&큐] 기능개발 (0) | 2024.09.05 |
---|---|
[고득점 Kit / 스택&큐] 같은 숫자는 싫어 (0) | 2024.09.04 |
[고득점 Kit / 해시] 의상 (Counter, 리스트 컴프리헨션) (0) | 2024.09.02 |
[고득점 Kit / 해시] 완주하지 못한 선수 (해시맵) (0) | 2024.09.01 |
[고득점 Kit / 해시] 폰켓몬 (0) | 2024.09.01 |