https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
Level 2. 전화번호 목록
접근 방식
1. phone_book 원소를 정렬한다.
2. phone_book-1 길이만큼 반복문을 돌면서, 문자열 슬라이스를 이용하여 현재 인덱스와 그 다음 인덱스의 문자열 접두사가 일치하는지 확인한다.
1. 처음 코드
def solution(phone_book) :
for i in phone_book :
count = 0
for j in range(len(phone_book)) :
if i==phone_book[j][:len(i)] :
count+=1
if j == len(phone_book)-1 :
if count == 2:
return False
return True
정확성은 맞는데, 효율성에서 맞지 않았다. for문을 두번이나 반복하는 것이 문제라고 생각되어 다시 작성하였다.
2. 최종 코드
def solution(phone_book):
answer = True
phone_book.sort()
for i in range(len(phone_book) - 1):
if phone_book[i] == phone_book[i + 1][:len(phone_book[i])]:
answer = False
break
return answer
생각보다 간단한 코드였다...
위의 코드와도 거의 흡사하지만 다른 것은 sort를 해야한다는 것이다.
'알고리즘 > Python' 카테고리의 다른 글
[프로그래머스] 파이썬 - 주식 가격 (0) | 2023.07.13 |
---|---|
[프로그래머스] 파이썬 - 의상 (0) | 2023.07.07 |
[프로그래머스] 파이썬 - 가장 큰 수 (0) | 2023.06.27 |
[프로그래머스] 파이썬 - K번째 수 (0) | 2023.06.26 |
[백준] 파이썬 - 백준 2667번 : 단지번호붙이기 (0) | 2023.06.20 |