Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 방문길이
- 프로그래머스
- 파이썬 #프로그래머스 #코딩테스트
- 코딩테스트
- SQL고득점키트
- h-index
- 행렬곱셈
- 고득점kit
- 재귀
- level2
- groupby
- SQL
- SQL #프로그래머스 #SELECT
- 고득점키트
- 파이선
- SQL #프로그래머스 #조건절 #ISNULL
- 골든래빗
- 공식문서
- 기초
- 분할정복
- Join
- Python
- 파이썬
- 스택
- H-인덱스
- 카카오코테
- SQL #프로그래머스 #MAX #MIN
- 2단계
- 해시
- 코테
Archives
- Today
- Total
영아일지
[프로그래머스 고득점 키트 - 해시] Level2 - 전화번호 목록 본문
내 풀이
sol 1 )
접두사를 정렬한 후, 바로 옆 문자와 비교하여 같은 값을 가지면 return false
sort() 함수는
lst = ['11', '234', '11115' ] 일 경우
lst.sort() #['11', '11115' , '234' ] 로 나타난다 !
문자열의 번호 순으로 나열하기 때문에 바로 옆에랑만 비교해줘도 된다
def solution(phone_book):
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
sol 2 ) 문제 분류가 해시로 되어있길래 다른 사람풀이를 보았다.
1. hash_map 이라는 딕셔너리를 통해 전화번호를 복제하고 (phone_book)
2. phone_book에 있는 것을 하나씩 불러오며 temp이라는 변수에 접두사를 하나씩 생성하고
3. 자기자신이 아닌 것들 중 hash_map에 속하는 것이 있으면 return False를 해준다.
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
level 2 부터는 효율성도 고려해야하기 때문에 값이 나오면 바로 return을 해주는 등 시간복잡도를 고려해야 한다!
'디지털 > 코딩테스트' 카테고리의 다른 글
프로그래머스 피보나치 수 문제 (0) | 2023.04.15 |
---|---|
[프로그래머스] level 2 - 1차 뉴스 클러스터링 (0) | 2023.04.02 |
[프로그래머스] SQL- STRING, DATE (0) | 2022.11.06 |
[프로그래머스] SQL고득점키트 - GROUP BY (0) | 2022.11.06 |
[프로그래머스 Lv0] 최빈값 구하기 (0) | 2022.10.27 |