문제 링크 : https://www.acmicpc.net/problem/5052
문자열 문제. 문자열을 갖는 리스트 ['123', '1234', '1231'] 을 정렬하면 ['123', '1231', '1234'] 가 된다는 것을 까먹지 말아야겠다.
프로그래머스에 이거랑 거의 똑같은 문제가 있었는데, 그 문제는 한 6개월 전? 쯤 풀었었다. 그때 거의 3시간 정도 걸렸던 거 같다. 시간복잡도 고려 때문인데, 그때는 내가 문제를 어렵게 보는 습관이 진짜 심했을 때다.
프로그래머스 : https://programmers.co.kr/learn/courses/30/lessons/42577
시간복잡도 때문에 해쉬 탐색이건, 힙 생성이건 어렵게 생각할 필요가 없고, 전화번호 문자열을 리스트에 담고 쭉 정렬한다.
일관성이 깨지려면 어차피 인덱스가 1차이나는 곳에서 발생한다. 이 생각을 할 수만 있으면 쉽게 풀 수 있는 문제인 것 같다.
문제를 너무 어렵게 생각하지 말고 쉽게 생각하는게 중요한 것 같다..
import sys T = int(sys.stdin.readline()) def program(): N = int(sys.stdin.readline()) phoneNumber = [] for _ in range(N): number = sys.stdin.readline().strip() phoneNumber.append(number) answer = 'YES' phoneNumber.sort() for i in range(1, N): if phoneNumber[i][:len(phoneNumber[i-1])] == phoneNumber[i-1]: answer = 'NO' break print(answer) for _ in range(T): program()