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)
'[BOJ] - Python' 카테고리의 다른 글
[백준] 단계별로 풀어보기 - 정렬 2750, 2587, 25305, 2751, 10989, 1427, 11650, 11651 python (0) | 2023.08.29 |
---|---|
[백준] 10814 : 나이순 정렬 python (0) | 2023.08.29 |
[백준] 10971 : 외판원 순회 2 python (0) | 2023.08.27 |
[백준] 1697 : 숨바꼭질 python (0) | 2023.08.26 |
[백준] 2573 : 빙산 python (0) | 2023.08.25 |