문제링크 :https://programmers.co.kr/learn/courses/30/lessons/42577

 

코딩테스트 연습 - 전화번호 목록

전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조��

programmers.co.kr

 

 

 문제설명 

 

1 .전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어짐

2. 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 

 

 알고리즘 

 

1. 맨 앞 인덱스 부터 확인하는데  같은 인덱스면 생략.

2. 확인하는 전화번호의 길이( i 인덱스 ) 가 확인 할 인덱스의 전화 번호 길이 ( j 인덱스 )보다  더 길면 생략

3. 확인하는 전화번호( i 인덱스 ) 가 확인 할 인덱스의 전화 번호 ( j 인덱스 )맨 앞부분에 들어있는지 확인후 return.

 

 코드 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def solution(phone_book):
    answer = True
    for i in range(len(phone_book)):
        st1 = phone_book[i]
        for j in range(len(phone_book)):
            st2 = phone_book[j]
            if i==j :  #같은 인덱스면 생략
                continue
                #길이가 더 길면 생략
            if len(st1)>len(st2):
                   continue
            if st1 in st2[:len(st1)]:
                return False
    return True
cs

 

ariz1623