시간 제한 : 2초
1 ≤ N ≤ 20,000
입력 처리: O(N)
중복 제거: O(N) (set을 사용한 중복 제거)
정렬: O(N log N) (Timsort 정렬)
출력: O(N)
=> O(N log N) = 약 80,000만 => 적합
파이썬의 내장 정렬 함수인 sort()는 Timsort 알고리즘을 사용한다.
Timsort는 합병 정렬과 삽입 정렬의 장점을 결합한 알고리즘으로, 최악의 경우 시간 복잡도는 *O(N log N)
import sys
# 1. input 받기
N = int(sys.stdin.readline())
arr = []
for _ in range(N):
arr.append(sys.stdin.readline())
# 2. 중복 제거
unique = list(set(arr))
# 3. 정렬
unique.sort(key=lambda x: (len(x), x))
# 4. 출력
for u in unique:
print(u)
# print(*unique, sep="\n")
# 1. input 받기
N = int(input())
arr = []
for _ in range(N):
arr.append(input())
# 2. 중복 제거
unique = list(set(arr))
# 3. 정렬
unique.sort(key=lambda x: (len(x), x))
# 4. 출력
print(*unique, sep="\n")