반응형
250x250
Notice
Recent Posts
Recent Comments
Link
DecordRay
[프로그래머스] Level2 : 전화번호 목록[Python] 본문
728x90
반응형
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42577
풀이 :
문제자체는 해시로 분류되어있지만 조금더 직관적이고 효율적인 코드로 해결하기 위해 아래와 같은 2가지 방법으로 풀이를 진행하였음
첫번째 방법(정렬)
1. 리스트를 정렬
2. i번째 문자열과 i+1번째 문자열을 비교(i번째 문자열 길이만큼)하여 같으면 answer = False
* Tip - 여기서 리스트의 원소들은 문자열이기 정렬 후 Ex) ["1292","25","132"] -> ["1292","132","25"] 로 되는 것에 주의
두번째 방법(정렬 + zip(), startswith() 메소드 사용)
1. 리스트를 정렬
2. zip 메소드를 사용하여 순차대로 문자열 2개씩 잘라서 chk1, chk2변수에 저장 후 비교 진행
3. startswith메소드를 사용하여 문자열 비교
* Tip - 메소드 활용에 대한 설명은 주석 참고
코드 :
첫번째 방법(정렬)
def solution(phone_book):
answer = True
phone_book.sort() # 문자열 정렬 -> Ex) ["1292","25","132"] -> ["1292","132","25"]
for i in range(len(phone_book)-1): # i번째 문자열과 i+1번째 문자열을 비교(i번째 문자열 길이만큼)하여 같으면 answer = False
if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
answer = False
break
return answer
두번째 방법(정렬 + zip(), startswith() 메소드 사용)
def solution(phone_book):
answer = True
phone_book.sort()
for chk1,chk2 in zip(phone_book,phone_book[1:]): # zip 메소드를 이용하여 문자열 2개씩 연달아서 비교
if chk2.startswith(chk1): # chk2가 chk1으로 시작하는지를 판별하는 메소드 -> True False로 반환
answer = False
return answer
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Level2 : k진수에서 소수 개수 구하기[Python] (0) | 2023.01.16 |
---|---|
[프로그래머스] Level2 : 귤 고르기[Python] (0) | 2023.01.16 |
[프로그래머스] Level2 : [1차] 뉴스 클러스터링[Python] (0) | 2023.01.13 |
[프로그래머스] Level2 : n^2 배열 자르기[Python] (0) | 2023.01.12 |
[프로그래머스] Level2 : 프린터[Python] (0) | 2023.01.11 |
Comments