sm 기술 블로그

87. 1181(단어 정렬) 본문

문제/백준_파이썬

87. 1181(단어 정렬)

sm_hope 2022. 6. 16. 11:24
import sys
input = sys.stdin.readline()

N = int(input())

arr = set([input().strip() for _ in range(N)])

arr = sorted(list(arr), key=lambda x: (len(x), x))

for val in arr:
    print(val)

문제요약

문자열을 받음 -> 길이가 짧은 순으로 정렬 -> 길이가 같으면 사전순으로 정렬해라

해결

strip() 은 문자열에 양옆 공백을 제거해준다.

 

set()은 집합으로 중복을 제거해준다. 하지만 순서는 보장되지 않는다.

따라서 처음 입력받은 리스트를 집합으로 바꿔 중복을 제거 해주었다.

 

sorted() 정렬은 리스트만 가능하다. 집합으로 형변환을 해준 현재 정렬을 바로 하기는 불가능 하다 따라서 list로 다시 바꿔 주고 정렬을 사용하자.

 

key=lambda x: (len(x), x) 정렬은 옵션지정이 가능하다. 다음 옵션은 x의 값들을 길이 별로 오름차순으로 정렬을 하고 만약 길이가 갔다면 x문자 하나하나 비교해서 (아스키코드) 오름차순으로 정렬한다.

 

 

'문제 > 백준_파이썬' 카테고리의 다른 글

89. 18870 (좌표압축)  (0) 2022.06.18
88. 10814(나이순 정렬)  (0) 2022.06.17
86. 11651(좌표 정렬하기2)  (0) 2022.06.16
85. 11650(좌표 정렬하기)  (0) 2022.06.15
84. 1427(소트인사이드)  (0) 2022.06.14
Comments