Algorithm/Python

[백준 1181] 단어 정렬

🥭맹2 2021. 4. 22. 21:03

1. 문제

www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.

www.acmicpc.net

2. 접근 방법

정렬하는 문제

lambda를 잘 이용하면 된다.

lambda x: (len(x), x[:])

정렬 조건이 여러개일 경우에는 key=lambda x: (첫번째 정렬 조건, 두 번째 정렬 조건, ...) 

하면 되고

reverse하고 싶으면

sort함수의 인자로 reverse=True를 넣어주면된다.

 

그리고 중복되는 값은 한번만 출력이라 입력받을 ㄸㅐ set을 한 번 거쳐줬다

3. 코드

python

N = int(input())
lst = list(set([input() for _ in range(N)]))
lst.sort(key=lambda x: (len(x), x[:]))
print(*lst, sep="\n")

4. 마치며

 

'Algorithm > Python' 카테고리의 다른 글

[백준 1927] 최소 힙  (0) 2021.04.22
[백준 7568] 덩치  (0) 2021.04.22
[백준 1874] 스택 수열  (0) 2021.04.22
[백준 2156] 포도주 시식  (0) 2021.04.22
[백준 20061] 모노미노도미노2  (0) 2021.04.22