BAEKJOON #5052 전화번호 목록

2020. 4. 6. 22:03개발노트

이 문제의 저작권은 BAEKJOON에 있습니다.

 

https://www.acmicpc.net/problem/5052

 

문제는 위 링크에서 확인할 수 있습니다.

#전화번호 목록
#https://www.acmicpc.net/problem/5052
import sys

def checker(get_phonenum):
    for j in range(0, N - 1):
        get_len = len(get_phonenum[j])
        if get_phonenum[j] == get_phonenum[j+1][:get_len]:
            return 'NO'
    return 'YES'


TC = int(sys.stdin.readline())

for tc in range(TC):
    N = int(sys.stdin.readline())
    get_phonenum = []
    for n in range(N):
        get_phonenum.append(sys.stdin.readline().rstrip())

    #yes / no 판별
    get_phonenum = sorted(get_phonenum)
    print(checker(get_phonenum))
            

풀이

 

겹치는 전화번호가 있는지 판별해야 합니다.
만약에 겹치는 전화번호가 하나라도 있다면 YES를 출력하고
그렇지 않다면 NO를 출력합니다.

 

비교해주기 위해 입력 받은 배열을 사전순으로 정렬합니다. (sorted 를 사용)
정렬이 된 for문으로 배열을 돌며 앞에 있는 요소와 전화번호가 같은지 비교합니다.
앞에 있는 전화번호의 문자열 크기 만큼 뒤에 있는 요소를 자르고 같은지 비교합니다.