반응형
Level 2 해시
문제 : https://programmers.co.kr/learn/courses/30/lessons/42577
제출 코드
def solution(phone_book):
answer = True
phone_book.sort(key = lambda x : (x, len))
for i in range(len(phone_book)-1):
left = phone_book[i]
right = phone_book[i+1]
if left == right[:len(left)]:
answer = False
return answer
return answer
좋아요를 가장 많이 받은 코드
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
문자열을 첫 글자 순서로 정렬
zip 함수를 이용해서 앞 변수를 순서대로 튜플을 만들어 반환
["119", "1195524421"], ["1195524421", "97674223"]
startswith(p1)를 사용해서 문자열의 시작지점에서 p1이 있는지 확인
p2 = "1195524421"
p2.startswith("119") # True
정리 및 복습
처음에는 전화번호를 단순하게 sort() 정렬만 해서 길이가 우선이 아닌 첫 문자 순서로 정렬되어 문제의 의도와 다르게 풀었습니다.
1. sort에 lambda 안에 len이라는 내장함수를 바로 쓸 수 있는지 처음 깨달았습니다.
2. 정렬에서 우선순위를 값, 길이로 정하고 i와 i+1만을 비교하여 for문을 2중이 아닌 1개로만 풀 수 있었습니다.
3. startwith 이라는 문자열 내장 함수를 새롭게 알았습니다.
반응형
'ProblemSolving > Hash' 카테고리의 다른 글
프로그래머스 베스트앨범 (파이썬) (0) | 2022.05.05 |
---|---|
프로그래머스 위장 (파이썬) (0) | 2022.05.03 |
프로그래머스 완주하지 못한 선수 (파이썬) (0) | 2022.05.03 |
프로그래머스 신고 결과 받기 (파이썬) (0) | 2022.05.03 |