프로그래머스 - 전화번호 목록

박상진·2022년 1월 28일
0

프로그래머스

목록 보기
49/65
post-thumbnail

자세한 설명은 링크 참고

어떤 번호의 접두번호가 다른 어떤 번호와 같다면 False를 리턴하고, 그런 번호가 없으면 True를 리턴하는 문제이다.

문제풀이

def solution(phone_book):
    answer = True
    phone_book.sort()
    cnt = 0
    for i in phone_book :
        le = len(phone_book[0])
        if phone_book[0] in i[:le] :
            cnt += 1
        if cnt >= 2 :
            answer = False
            break
    return answer

일단 이 코드는 틀렸다.
sort()후에 가장 처음 요소값이 접두사로 들어있는 경우를 제외해주었는데, 4개가 틀렸다.

이 코드가 틀렸다는 말은, 이후 번호도 비교해주어야 한다는 뜻이다.
전체를 전체와 비교한다면 가능하겠지만, 아마도 효율성을 통과하지 못할 듯 하여 구글링을 시전하였다.

다른 사람의 코드

def solution(phone_book):
    answer = True
    phone_book.sort()
    for i in range(len(phone_book)-1) :
        if len(phone_book[i]) < len(phone_book[i+1]) :
            if phone_book[i+1][ :len(phone_book[i])] == phone_book[i] :
                answer = False
                break
    return answer

출처 : https://velog.io/@chaegil15
이분이 설명하기를 리스트를 sort()해주었기 때문에 앞에 있는 번호와 뒤에 있는 번호 하나씩만 비교해줘도 맞을것은 맞고 틀릴것은 틀릴것이다 판단하였다고 한다. 너무 동의한다.

한걸음만 더 생각하면 맞출수도 있었을거라 생각하니 슬펐다.

profile
개발자가 되고싶당

0개의 댓글