본문 바로가기

알고리즘 공부/프로그래머스 > Python3

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

https://programmers.co.kr/learn/courses/30/lessons/42577

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조

programmers.co.kr

 

[오답] → 정확성 100%, 효율성 0%

 

효율성 0%로 시간초과된 코드,,

 

 

[정답1]

 

근데 혹시나 return을 바로 True, False로 해줘서 효율성이 100%로 나왔나 싶어

위에서 효율성이 0%나왔던 코드를 answer만 없애고 return을 바로 True, False로 해주어서 코드를 제출해본 결과,,,

 

 

[정답2]

 

정답이었다,, 고로 위의 코드에는 문제가 없는 걸로!

문제에서 내준 형태로 answer을 return했더니 효율성이 0%라니,,, 너무한 것,,,

 

1. 이중 for문을 돌면서 만약 i=k와 다르고(같은 문자열은 비교하면 안되니까)

phone_book[i]<=phone_book[k]라면, (phone_book[i]가 접두어일 경우, 해당 단어보다 길이가 같거나 짧기 때문에),

그 중에서도 만약 phone_book[i]과 phone_book[k]의 0~phone_book[i]번째 문자열이 같다면 phone_book[i]는 phone_book[k]의 접두어이기 때문에 바로 false를 return해준다.

2. 이중 for문을 돌 동안 접두어를 찾지 못했다면, True를 return해준다.