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
- 다이나믹프로그래밍
- English
- 안드로이드
- opic
- 영어말하기
- 이진탐색 #나무 자르기
- 오픽가격
- XML
- 메모이제이션
- 탑다운
- dp
- 피보나치수열
- stack 스택
- 오픽점수잘받는방법
- 영어회화
- 바텀업
- 오픽노잼
- 이진탐색
- 오픽
- XML주석
- 주석
- dynamicProgramming
- topdown
- fibo
- 오픽공부법
- 안드로이드주석
- ㅂ
- 디피
- 오픽노잼공부방법
Archives
RUBY
[프로그래머스] 전화번호 목록 본문
출처:: programmers.co.kr/learn/courses/30/lessons/42577
분류:: 해시
1. 문제 이해 및 해결과정
1. 정렬
- phone_book을 정렬하면, 12 123,1234 와 같이 정렬된다. - 리스트 내에서, 앞의 수와 뒤의 수 끼리만 확인하면 된다 |
2. 풀이방법
1. [ python ] 정렬
- 생각해보니 이 풀이는 ["146","2146"]의 경우는 통과되면 안되는데 이것이 답이 되었다. --????
- 이 테스트케이스는 포함하는 경우이기 때문이다
- 접두사해 포함해야 하므로 아래 풀이는 틀린 풀이이다
def solution(phone_book):
phone_book.sort() #정렬을 하게되면, 앞뒤의 숫자만 비교하면 된다
for i in range(len(phone_book)-1):
if phone_book[i] in phone_book[i+1] :#앞의것이 뒤의 것에 포함된다면
return False #어떤번호가 다른번호의 접두어인 경우가 있다
return True #접두어인 경우가 없다
2. [ python ] zip + startswith
def solution(phone_book):
phone_book.sort()
for x,y in zip(phone_book,phone_book[1:]):
if y.startswith(x): #y가 x로 시작하면
return False
return True
3. 해시
def solution(phone_book):
answer=True
dict={}
for phone_number in phone_book:
dict[phone_number]=1 #key:폰번호 value: 1
for phone_number in phone_book:
tmp=""
for x in phone_number: #phone_number 123이라면
tmp+=x #tmp에는 1, 12, 123이 된다
if tmp in dict and tmp!=phone_number: #현재 폰번호가 아니고 dict에 있을 경우
answer=False
return answer
3. 오답원인
4. 알게된 점
zip()
: 동일한 개수의 자료형을 묶어주는 함수
a=[1,2,3,4,5,6,7]
#a[1:]=[2,3,4,5,6]
for x,y in zip(a,a[1:]):
print(x,y)
#이렇게 결과 쌍이 나온다
1 2
2 3
3 4
4 5
5 6
6 7
str.startswith(str2)
: str이 str2라는 문자로 시작할 경우 True, 아니라면 False 반환
str1.startswith(str2,begin,end) #문자열str1의 begin부터 end전까지 중 문자열str2를 찾는다
#찾을 수 있으면 True
#아니면 False
'PS > Programmers' 카테고리의 다른 글
[프로그래머스] 위장 (0) | 2020.10.23 |
---|---|
[프로그래머스] 가장 큰 정사각형 찾기 (0) | 2020.10.23 |
[프로그래머스] H-Index (1) | 2020.10.22 |
[프로그래머스] 구명보트 (0) | 2020.10.22 |
[프로그래머스] 프린터 (0) | 2020.10.21 |
Comments