본문 바로가기
백준

[백준] 1181번 파이썬 (단어 정렬)

by 헤이즐넛 좋아하는 개발자 2024. 3. 12.

1. 문제와 예제

(문제 링크 : https://www.acmicpc.net/problem/1181)

 

1181번: 단어 정렬

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

www.acmicpc.net

문제
예제

정렬 문제이며 중복된 단어는 하나만 남긴다는 점을 보아 집합을 사용해야 함을 알 수 있다.


2. 코드

import sys
input = sys.stdin.readline

N = int(input().rstrip()) # 단어의 개수

lst = []
for _ in range(N):
    lst.append(input().rstrip()) # 단어들을 list로 받음

lst = sorted(set(lst)) # 중복된 단어 처리, 사전 순 정렬
lst.sort(key=len) # 길이 짧은 순 정렬

for i in lst:
    print(i)

 


3. 풀이

문제에서 준 정렬 조건은 화살표 좌측의 순서이지만, 코드에서는 화살표 우측의 순서로 처리했을 때 해결된다.