모눈종이에 사각사각
[프로그래머스] 전화번호 목록 본문
🍎[프로그래머스] 전화번호 목록
문제링크
https://programmers.co.kr/learn/courses/30/lessons/42577
⚾ 코드
def solution(phone_book):
answer = True
phone_book.sort() # 정렬을 한다. 그러면 접두어가 같은 순서대로 정렬이 될 것이다.
for i in range(len(phone_book)-1):
if phone_book[i] == phone_book[i+1][:len(phone_book[i])]: # 접두어 비교
return False
return True
🔔 해결 과정 & 깨달은 점
- 처음에 이중 for문으로 문제를 해결했더니, 효율성 3, 4번에서 에러가 났다. 그래서 for문을 한 번만 사용하고자 sort()를 사용했다.
- phone_book을 sort하면 사전순으로 정렬이 되기 때문에 다음과 같이 정렬이 된다. 따라서 이중 for문을 사용할 필요 없이 현재 문자열이 다음 문자열에 포함하는지만 확인하면 된다.
['119', '97674223', '1195524421'] -> ['119', '1195524421', '97674223']
- 정렬을 한 후 for문을 돌면서 현재 문자열이 다음 문자열에 있는지 확인한다.
- 그러나 여기서 현재 문자열이 다음 문자열보다 길면 안되므로, 길이를 제한한다.
- 접두어가 나오면 바로 False를 리턴한다.
'CodingTest > Programmers' 카테고리의 다른 글
[프로그래머스] 문자열 압축 (0) | 2022.04.15 |
---|
Comments