Algorithm/[BOJ] - Python
[백준] 1181 : 단어 정렬
Codew
2023. 8. 29. 18:21
1. 실행시간 단축을 위해 sys 라이브러리를 import하고 input()함수로 sys.stdin.readline()을 사용할 수 있도록 세팅한다.
2. n을 입력받는다.
3. 문자열을 저장할 리스트를 생성한다.
4. list.append()로 n개의 문자열을 입력받을 때마다 리스트에 append해준다.
이때 sys.stdin.readline()은 개행문자 '\n'까지 입력받는다는 걸 주의해서 strip()을 수행하는 걸 잊으면 안된다.
5. list.sort()로 문자열을 사전순으로 정렬한다.
6. list.sort(key=len)으로 문자열의 길이에 따라 다시 정렬해준다.
7. 정렬된 문자열의 내용을 출력한다.
문제에서 주어진 조건은 길이의 오름차순으로 정렬 -> 사전의 오름차순으로 정렬을 하는 것인데
이처럼 상위 조건 A와 하위 조건 B가 있을 때
B에 따른 정렬을 먼저 수행하고 A에 따른 정렬을 수행해줘야 원하는 결과를 얻을 수 있다.
길이 오름차순 정렬(A) 뒤 사전 오름차순 정렬(B)한 결과
사전 오름차순 정렬(B) 후 길이 오름차순 정렬(A)한 결과
import sys
input = sys.stdin.readline
n=int(input())
list = []
for i in range(n):
s = input().strip()
if s not in list:
list.append(s)
list.sort()
list.sort(key=len)
for i in list:
print(i)