https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
# 2023.04.18
def solution(phone_book):
answer = True # 접두어가 없으면 true
phone_book.sort()
length = len(phone_book)
for i in range(length - 1):
if phone_book[i] == phone_book[i + 1][:len(phone_book[i])]:
answer = False
break
return answer
#solution(["119", "97674223", "1195524421"])
#solution(["12","123","1235","567","88"])
solution(["1", "12312", "1234", "23", "234", "256", "2", "1232", "36", "3", "32"])
Key Point!
파이썬은 문자열을 정렬을 할때 ASCII값을 기준으로 정렬을 한다.
문자열의 첫 번째 글자부터 ASCII값으로 비교하면서 정렬을 수행한다.
만약, 숫자를 정렬하고 싶다면, sort()메소드의 key인자를 활용하여 정렬 기준을 지정할 수 있음.
solution(["1", "12312", "1234", "23", "234", "256", "2", "1232", "36", "3", "32"], key=int) 와 같이 key인자에 int함수를 넣으면 숫자로 정렬을 할 수 있음
예를 들어 123과 1234를 비교할 때는 123의 4번째에는 숫자가 없으니 123이 먼저 와야 한다
왜?
아스키 값으로 비교할 때, 먼저 비교되는 문자열의 문자가 같다면 그 다음 문자를 비교하여 정렬
만약, 비교하는 두 문자열의 길이가 다른 경우에는, 짧은 문자열이 긴 문자열의 앞에 위치하게 된다.
이때, 짧은 문자열의 마지막 문자 다음에는 null문자('\0')가 삽입되어서 비교가 수행된다. NULL문자의 ASCII값은 0이기 때문에, null문자 다음에 오는 문자열은 무조건 뒤쪽으로 정렬되게 된다.
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스/python/Lv1] 숫자 문자열과 영단어 (0) | 2023.12.14 |
---|---|
[BFS] Python 43162 네트워크 (0) | 2023.05.30 |
[구현] 프로그래머스 136798 기사단원의 무기 (0) | 2023.03.21 |
[SQL] 프로그래머스 join 59043 (1) | 2023.02.23 |
[SQL] 프로그래머스 not in 59042 (0) | 2023.02.23 |