문제
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
코드
import sys
n = int(input())
s = [sys.stdin.readline().rstrip() for i in range(n)]
s = list(set(s)) # set()을 통해 중복제거 후 정렬을 위해 list 재변환
s.sort()
s.sort(key = len) #sort의 key인자를 통해 길이순 정렬
for i in s:
print(i)
- sort의 key인자를 활용하면 길이 순 정렬이 가능함
sort의 key인자 활용
- len
a.sort( key = len ) => 길이 순 정렬
- lambda
a = [(1, 2), (5, 1), (0, 1), (5, 2), (3, 0)]
a.sort( key = lambda x : x[0] ) => 2차원 리스트 요소를 특정하여 정렬 가능
a = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
참고한 블로그
'코딩테스트 > 백준' 카테고리의 다른 글
[백준] 1436 : 영화감독 숌 (0) | 2023.09.24 |
---|---|
[백준] 10816 : 숫자 카드 2 (0) | 2023.09.24 |
[백준] 10989 : 수 정렬하기 3 (0) | 2023.09.23 |
[백준] 11653 : 소인수분해 (0) | 2023.09.23 |
[백준] 1620 : 나는야 포켓몬 마스터 이다솜 (0) | 2023.09.23 |