본문 바로가기

[BOJ] - Python

[백준] 1181 : 단어 정렬

 

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)