반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 코드
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(len(phone_book)-1):
if len(phone_book[i]) < len(phone_book[i+1]):
if phone_book[i+1][:len(phone_book[i])] ==phone_book[i]:
answer = False
return answer
[ : ] 활용하기
나는 슬라이싱 인덱스를 잘 활용하지 못했던 것 같다. 아무리 배열을 첫 번째 원소라도, 슬라이싱 인덱스를 적용하면 해당 배열의 원소에서도 슬라이싱이 된다는 점을 알게 되었다.
또한 접두사를 알아야 하므로 정렬을 해야 한다. 정렬하면 결국 접두사가 될 수가 비교할 수의 앞으로 오게 되니까 두 수를 비교만 해주면 된다.
그리고 사람들이 다양한 방법으로 푼 것을 보았다.
해시 이용한 풀이
def solution(phone_book):
answer = True
dic ={}
for pNumber in phone_book:
dic[pNumber] = 1
for pNumber in phone_book:
temp=""
for num in pNumber:
temp +=num
if temp in dic and temp!=pNumber:
answer = False
return answer
zip, startswith을 이용한 풀이
def solution(phone_book):
phone_book = sorted(phone_book)
for p1, p2 in zip(phone_book, phone_book[1:]):
if p2.startswith(p1):
return False
return True
그리고 zip, startswith 로 푼 것도 보았다. zip을 쓰는 이유는 2번 원소가 1번으로 시작하면 True를, 아니면 False를 반환한다. startswith도 마찬가지이다.
반응형
'코딩테스트 대비 > 프로그래머스' 카테고리의 다른 글
| [Python][프로그래머스] lv3. 여행경로 (0) | 2023.07.09 |
|---|---|
| [Python][프로그래머스] lv3. 단어 변환 (0) | 2023.07.07 |
| [Python][프로그래머스] lv2. 타겟 넘버 (0) | 2023.07.07 |
| [Python][프로그래머스] lv1. 같은 숫자는 싫어 (0) | 2023.07.07 |
| [Python][프로그래머스] lv2. 소수 찾기 (0) | 2023.07.06 |