반응형
프로그래머스: 전화번호 목록 풀이
문제풀러가기
https://programmers.co.kr/learn/courses/30/lessons/42577?language=python3
문제 분석
1. 비슷한 숫자끼리 모아두기 위해, 문자열을 정렬해줍니다. (sort 사용)
2. 정렬된 문자를 두 개씩 차례대로 확인합니다.
더보기
예 ) ["10", "111", "112", "1234", "12344", "123456"] 가 있으면,
10과 11비교, 111과 112 비교, 112와 1234비교, 1234와 12344비교....
코드: 시간초과 실패
def solution(phone_book):
rs=sorted(phone_book,key=lambda x:len(x))
for j in range(len(rs)-1):
result = rs[j]
for i in range(j+1,len(rs)):
if result==(rs[i])[:len(result)]:
return False
return True
* 처음에는 길이가 짧은 순으로 정렬을 한 후, 이중 for문을 사용하여 하나씩 비교하는 형식으로 코드를 짰습니다.
*결과는 마지막 두개의 효율성 테스트에서 시간초과가 떳습니다.
코드: 성공
def solution(phone_book):
phone_book.sort()
for i in range(len(phone_book)-1):
if phone_book[i]==(phone_book[i+1])[:len(phone_book[i])]:
return False
return True
*길이 순으로말고, 비슷한 문자열대로 정렬을 하면, 이중 for문을 사용할 필요없이,
*한 개의 for 문으로 둘 둘씩 차례대로 비교하면 됩니다.
코드: 성공 - 다른 사람
def solution(phone_book):
phone_book.sort()
for i,j in zip(phone_book,phone_book[1:]):
if j.startswith(i):
return False
return True
*startswith를 사용한 코드입니다.
*startswith는 str1.startswith(str2) 형식으로 쓰입니다.
- str1에서 str2로 시작할 경우 True 반환, 그렇지 않다면 False반환.
startswith/endswith에 대해 간단한 설명 보시고 싶으시면 아래 링크를 참고해주세요.
2021.07.01 - [(Python)파이썬/(Python)파이썬 문법] - (파이썬) 문자열 처음/끝부분 같은지 확인 : startswith와 endswith사용법 + 예제
반응형
'(Python)파이썬 > (Python)파이썬 문법' 카테고리의 다른 글
(파이썬) 문자열 처음/끝부분 같은지 확인 : startswith와 endswith사용법 + 예제 (0) | 2021.07.01 |
---|---|
(파이썬) 반올림, 올림, 내림 - 다양한 방법과 예제 (0) | 2021.06.24 |
(파이썬)파이썬 문자열을 리스트로/문자열 쪼개기 + 예제 (0) | 2021.06.23 |
(파이썬)알파벳 or 숫자 확인/isdigit(),isalpha() 알아보기 + 예제 (0) | 2021.06.22 |
(파이썬) 문자열 리스트 합치기/파이썬 join()+예제 (0) | 2021.06.21 |
댓글