반응형
250x250
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 |
Tags
- 알버트
- 패스트캠퍼스후기
- SKT
- R
- albert
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- 패캠챌린지
- 패스트캠퍼스
- 직장인인강
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- 직장인자기계발
- AI
Archives
- Today
- Total
제주 탈출 일지
[Python3] 프로그래머스 레벨 2 - 전화번호 목록 본문
728x90
반응형
처음 작성한 코드
이중 for문을 사용해서 효율성에서 좋지 못한 모습을 보였다.(91점)
def solution(phone_book):
answer = True
phone_book.sort(key=len)
len_pb = len(phone_book)
for i in range(len_pb):
for j in range(i+1, len_pb):
if phone_book[j].startswith(phone_book[i]) == True:
return False
return True
궁금해서 해답을 보았는데 zip을 사용하여 반복문을 줄였다.
def solution(phoneBook):
phoneBook = sorted(phoneBook)
for p1, p2 in zip(phoneBook, phoneBook[1:]):
if p2.startswith(p1):
return False
return True
나는 모든 경우의 수(ex, 1,2,3 이라면 1-2 1-3 2-3 처럼 모두 확인)를 따져야 된다고 생각했는데 zip을 사용하면 그냥 바로 옆에 있는 경우만 확인하여 이게 모든 경우를 처리가능한가? 이런 의문점을 가졌다.
하지만 sort를 하게 되면 문자열의 앞자리부터 확인하며 정렬해주기 때문에 결국 비슷한 녀석끼리 붙어있게 된다는 것을 확인하였다.
phone_book = ["12","567","123","88","1235"]
이런 리스트는
['12', '123', '1235', '567', '88']
이렇게 정렬된다.
앞자리만 보면 1 - 1 - 1- 5 - 8
그 다음자리 수를 보면 2 - 2 - 2 - 6 - 8
처럼 각 자리수마다 정렬이 된다.
zip, startswith 함수를 다시 한번 정리할 수 있었다. bb
728x90
반응형
'코딩 테스트' 카테고리의 다른 글
[python3] 프로그래머스 레벨 3 - 베스트앨범 (0) | 2021.06.14 |
---|---|
[Python3] 프로그래머스 레벨 2 - 위장 (0) | 2021.06.07 |
[Python3] 프로그래머스 레벨 1 - 완주하지 못한 선수 (0) | 2021.06.06 |
[Python3] 프로그래머스 레벨 3 - 네트워크 (0) | 2021.04.27 |
[Python3]프로그래머스 레벨 2 - 타겟넘버 (0) | 2021.04.26 |
Comments