CodingTest/Baekjoon

[baekjoon] 백준 5052번(파이썬): 전화번호 목록

JunJangE 2021. 10. 8. 16:21

문제

 

5052번: 전화번호 목록

첫째 줄에 테스트 케이스의 개수 t가 주어진다. (1 ≤ t ≤ 50) 각 테스트 케이스의 첫째 줄에는 전화번호의 수 n이 주어진다. (1 ≤ n ≤ 10000) 다음 n개의 줄에는 목록에 포함되어 있는 전화번호가

www.acmicpc.net

알고리즘

- 테스트 케이스만큼 반복한다.

- 전화번호를 문자열로 입력받아 오름차순으로 정렬한다.(사전순으로 정렬)

- 반복문을 통해 전화번호를 확인한다.

- 현재 전화번호의 문자열과 다음 전화번호의 현재 전화번호 길이만큼의 문자열을 비교한다.

- 같으면 일관성이 없는 것이고 다르면 일관성이 있는 것이다.

코드

import sys

t = int(sys.stdin.readline())
for _ in range(t):
    n = int(sys.stdin.readline())
    call = [str(sys.stdin.readline().strip()) for _ in range(n)] # 전화번호를 문자열로 받는다.
    call.sort() # 오름차순으로 정렬하여 사전순으로 정렬
    chek = "yes" # 일관성이 있는지 체크

    # 반복문을 통해 전화번호를 확인
    for i in range(len(call) - 1):

        # 현재 전화번호의 문자열과 다음 전화번호의 현재 전화번호 길이만큼의 문자열과 같은지 확인
        # 같으면 일관성이 없는 것
        if call[i] == call[i + 1][0:len(call[i])]:
            chek = "no"

    if chek == "no":
        print("NO")
    else:
        print("YES")

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com