📝 문제
> 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.
- 첫번째 케이스는 맨 처음의 119가 3번째의 접두사라서 false다.
- 두번째 케이스는 서로 접두어가 되지 않아서 true다.
- 세번째 케이스는 12가 123, 1235의 접두사라서 false다.
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+1].startswith(phone_book[i]):
answer = False
return answer
> 핵심 : startwith() 사용!
1. 우선, phone_book을 정렬한다. (최대한 비슷한 거끼리 모아두려고)
2. phone_book[i+1]이 phone_book[i]로 시작하는지 확인한 후, 만약 그렇다면 answer을 False로 바꾼 후 return 한다.
그런 경우가 없다면 그대로 True로 return한다.
끝~
⭐ 느낀점
> 이게 해시라고 적혀있는 걸 봐서는 해시를 이용해서 푸는 방법이 있는 거 같긴 한데,, 그렇게 못 풀어서 좀 마음이 그렇긴 하다. 허허. 다음 번에는 해시로도 풀어봐야겠다.
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Level 1] 자릿수 더하기 (파이썬) (0) | 2022.05.06 |
---|---|
[프로그래머스 / Level 1] 문자열 다루기 기본 (파이썬) (0) | 2022.05.05 |
[프로그래머스 / Level 2] 최솟값 만들기 (파이썬) (0) | 2022.05.03 |
[프로그래머스 / Level 2] 최댓값과 최솟값 (파이썬) (0) | 2022.05.02 |
[프로그래머스 / Level 1] 이상한 문자 만들기 (파이썬) (0) | 2022.05.01 |