N개의 단어를 아래 규칙에 따라 정렬하는 문제다.
1. 길이가 짧은 것부터
2. 길이가 같으면 사전 순으로
백준 4673 문제에서 집합 set을 활용했는데 여기서도 활용했다!
import sys
n = int(sys.stdin.readline())
arr = set()
for i in range(n):
word = sys.stdin.readline().rstrip()
arr.add(word)
arr = sorted(arr)
arr = sorted(arr, key = len)
for i in arr:
print(i)
sys.stdin.readline()은 데이터를 한줄 단위로 입력받기 때문에, 개행문자가 같이 입력받아 진다.
개행문자를 제거하려면, .rstrip()을 붙여주면 된다.
sorted( <list> , key = <function> , reverse = <bool>)
arr = sorted(arr, key = len)
커스텀할 비교 함수를 넣어주면 된다.
비교 함수는 비교할 아이템의 요소를 반환하면 된다.
비교 함수는 익명 함수(lambda) 도 가능하고, 별도로 정의해도 된다.
reverse=True로 하면 역순으로 정렬한다.