본문 바로가기

백준 문제풀이/문자열

백준 1181 Python / 단어 정렬 / 실버5

 

안녕하세요.

백준 1181 단어 정렬 문제를 python으로 풀어보겠습니다.

링크는 다음과 같습니다.

 

https://www.acmicpc.net/problem/1181

 

1181번: 단어 정렬

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

www.acmicpc.net

 


풀이

 

보통의 문자열 문제들은 python으로 풀면 매우 간단하게 해결할 수 있습니다.

입력을 list로 받은 뒤, 중복 제거를 위해 set() 를 사용하고, 다시 list로 바꿔줍니다.

정렬을 위해 sort() 를 사용하는데, 일반적으로 sort를 사용하면 사전 순으로 정렬되게 됩니다.

길이 순 정렬을 위해 key 값을 넣어주면 해결할 수 있는데, lambda 식을 사용하면 간단하게 한 줄로 구현할 수 있습니다.

 

코드는 다음과 같습니다.

import sys # 빠른 입출력을 위해 sys 를 import 했습니다.

N = int(sys.stdin.readline()) # 빠른 입력
word = []
for i in range(N):
    word.append(sys.stdin.readline().strip()) # list에 단어 추가
word = list(set(word)) # 중복 제거
word.sort() # 사전 순으로 정렬
word.sort(key= lambda x : len(x)) # 길이 순으로 재정렬
print(*word, sep='\n') # word 리스트의 요소를 한 줄에 하나씩 출력

 

감사합니다.

'백준 문제풀이 > 문자열' 카테고리의 다른 글

백준 1259 Python / 팰린드롬수 / 브론즈1  (0) 2023.02.06