본문 바로가기
코딩 테스트/프로그래머스

전화번호 목록

by ornni 2024. 5. 21.
728x90
반응형

첫번째 코드

 

짧은 순서대로 정렬을 한 후에

만약 현재 단어와 동일하게 시작되는지 뒤의 모든 단어들을 비교한다.

 

def solution(phone_book):
    answer = True

    phone_book = sorted(phone_book, key = lambda x: len(x))

    for i in range(len(phone_book)-1):
        now = phone_book[i]
        for j in phone_book[i+1:]:
            length = len(phone_book[i])
            compare = j[:length]
            if now == compare:
                answer = False
                break
        if now == compare:
            answer = False
            break
            
    return answer

 

마지막 효율성 테스트 3, 4번에서 시간초과가 발생한다.

답이 틀린 코드 같지는 않다.


두번째 코드

 

그래서 두가지를 변경하기로 했다.

1. 비슷한 문자열 순서대로 정렬하면 금방 거를 수 있지 않을까?

2. startswith()라는 함수를 이용하자! (feat. GPT)

그러면 계산량도 더 적어지고 코드가 짧아진다!

 

def solution(phone_book):
    answer = True

    phone_book.sort()

    for i in range(len(phone_book)-1):
        if phone_book[i+1].startswith(phone_book[i]):
            answer = False
            break
            
    return answer

 

통과


링크

https://github.com/ornni/programmers/tree/main/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/42577.%E2%80%85%EC%A0%84%ED%99%94%EB%B2%88%ED%98%B8%E2%80%85%EB%AA%A9%EB%A1%9D

 

programmers/프로그래머스/2/42577. 전화번호 목록 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

기능개발  (0) 2024.05.23
완주하지 못한 선수  (0) 2024.05.22
예상 대진표  (0) 2024.05.20
직사각형 별찍기  (0) 2024.05.19
문자열을 정수로 바꾸기  (0) 2024.05.19