반응형
문제설명
https://programmers.co.kr/learn/courses/30/lessons/42577
사고과정
- 해쉬를 사용해야 하는 풀이라는데 해결하지 못했다.. 접두어를 어떻게 활용해야할지 고민하다가 결국 포기.. 예전에 풀었던 풀이로는 테스트 케이스가 추가되지 않아서 통과되지 않았다(startswith 문법 사용한 풀이)
- 그래서 해쉬를 활용한 정석으로 풀어보자 했는데 풀이법을 떠올리기 쉽지 않았다.. 그래서 다른 분의 풀이 중에 해쉬를 활용한 정석 풀이가 있어서 참고했다.
- 우선 처음에 전화번호를 해쉬에 모두 담는 1차 loop를 돈다.
- 그리고 전화번호 loop를 돌면서 전화번호 숫자 loop를 도는 이중루프를 돈다. 이중루프를 돌 때, temp라는 빈문자열 변수에 전화번호 숫자 하나씩 추가하면서 그 때마다 완성되는 temp 문자열이 해쉬의 key에 이미 있으면서 그 temp가 탐색하고 있는 완성된 전화번호와 같지 않을 때! 접두어를 의미하므로 False를 반환한다. 이 때, 그 temp가 탐색하고 있는 완성된 전화번호와 같지 않을 때! 라는 조건이 처음엔 이해가 안갔는데 출력해서 결과물을 확인해보니까 이해가 갔다. 만약 이 조건을 빼먹으면 예를 들어, [119, 3321] 이렇게 있을 때, 119가 하나인데 119은 119의 접두어이다 같은 오답을 내게 된다.. 해당 조건문이 인상깊다..
풀이(스스로 못 푼 풀이)
def solution(phone_book):
hash_map = {}
for phone_number in phone_book:
hash_map[phone_number] = 1
for phone_number in phone_book:
temp = ''
for number in phone_number:
temp += number
if temp in hash_map and temp != phone_number:
return False
return True
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (0) | 2021.12.23 |
---|---|
[프로그래머스] 프린터 (0) | 2021.12.20 |
[프로그래머스] 빛의 경로 사이클 (0) | 2021.12.19 |
[프로그래머스] 튜플 (0) | 2021.12.18 |
[프로그래머스] 수식 최대화 (0) | 2021.12.16 |