Study/코딩 테스트

2021.2.9 [백준] 단어 정렬

NOredstone 2021. 2. 9. 23:44

정렬 알고리즘

 

 

Q

 

www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

 

A

 

sorted()를 사용했다. 주의할 점은 길이순으로 한번 정렬하고 사전순으로 한번 더 정렬해야 한다.

 

코드

import sys

 

n = int(sys.stdin.readline().rstrip()) #단어의 갯수 N 입력

array = [0] * n

for i in range(n):

    array[i] = sys.stdin.readline().rstrip() #단어들 입력

 

a = set(array) #중복을 피하기 위해 set으로 변환
b = list(a)

 

answer = sorted(b, key = lambda x : (len(x), x)) #두 가지 조건으로 정렬하기 위해 key 사용

 

for i in answer:

    print(i)