728x90
https://www.acmicpc.net/problem/1181
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
다수의 단어를 입력받아서 길이와 알파뱃순으로 정렬하는 문제
# 1181번 문제 : 단어 정렬
# 알파벳 소문자로 이루어진 n개의 단어가 주어지면
# 길이가 짧은순으로, 길이가 같다면 사전순으로 정렬하는 문제
import sys
n = int(sys.stdin.readline())
answer = []
for i in range(n): # 배열로 문자열을 저장
answer.append(sys.stdin.readline())
answer=set(answer) # 집합자료형으로 변환해서 중복을 제거
answer=list(answer) # 다시 리스트로 변환
answer = sorted(answer, key= lambda x: (len(x),x)) # 정렬기준이 여러개임으로 sorted()함수와 람다식을 이용해서 길이와 알파뱃순으로 정렬
for j in range(len(answer)): # 출력
print(answer[j],end='')
중복제거를 위한 집합자료형 변환set(), 정렬의 key값이 여러개임으로 sorted()를 람다식과 함께 사용해서 해결할 수 있었던 문제였다 정렬문제들에 익숙해지는거 같다
728x90
'알고리즘 > 알고리즘 문제풀이' 카테고리의 다른 글
| 백준의 알고리즘 2751번 문제(python) (0) | 2021.07.24 |
|---|---|
| 백준의 알고리즘 10814번 문제(python) (0) | 2021.07.23 |
| 백준의 알고리즘 11650번 문제(python) (0) | 2021.07.13 |
| 백준의 알고리즘 2108번 문제(python) (0) | 2021.07.13 |
| 백준의 알고리즘 1427번 문제(python) (0) | 2021.07.11 |