문제 설명
https://school.programmers.co.kr/learn/courses/30/parts/12077
문제 분석
요소가 숫자로 이루어진 문자열이 들어간 배열(리스트)가 주어지는데, 특정 요소가 다른 요소의 접두어, 즉 문자열의 시작하는 부분부터 동일하게 존재하면 false를 반환하고, 존재하지 않으면 true를 반환하게 한다.
그렇다면 접두어로 작용하려면 다른 문자열의 길이보다 짧거나 같아야 한다. 그리고 첫번째 문자열이 서로 같아야 비교를 하는 것에 의미가 있기 때문에 정렬을 해줘야 할 것이다. (sort( ))
특정 인덱스에 해당하는 요소의 문자열과 그 다음 인덱스에 해당하는 요소의 값에서 이전 요소의 길이만큼 인덱싱한 것이 서로 같으면 접두어로 사용된다는 의미일 것이다.
Python3
def solution(phone_book):
answer = True
phone_book.sort() # 정렬하는 이유는 시작하는 숫자가 동일해야 의미가 있기때문
for i in range(len(phone_book) - 1): # 리스트 요소 마지막 요소 빼고 반복문
if len(phone_book[i]) < len(phone_book[i+1]): # 길이가 짧은 것만
# 이전 요소 길이만큼 인덱싱해서 비교
if phone_book[i] == phone_book[i+1][:len(phone_book[i])]:
answer = False
break
return answer
JavaScript
function solution(phone_book) {
var result = true;
phone_book.sort() // 정렬
for (let i = 0; i < phone_book.length - 1; i++){
if(phone_book[i].length < phone_book[i+1].length){
if(phone_book[i] == phone_book[i+1].slice(0, phone_book[i].length)){
result = false
break
}
}
}
return result;
}
'Coding Test' 카테고리의 다른 글
[CT - 프로그래머스] 베스트앨범 (0) | 2023.10.27 |
---|---|
[CT - 프로그래머스] 의상 (0) | 2023.10.26 |