1181번 단어 정렬
파이썬 기반으로 알고리즘 문제를 풀이한 과정과 작성한 코드를 간단히 정리한 글입니다.
문제
- 관련 문제: 백준 1181번 - 단어 정렬
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
단, 중복된 단어는 하나만 남기고 제거해야 한다.
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다.
구현
1
2
3
4
5
6
7
8
9
10
N = int(input())
word = set()
for i in range(N):
word.add(input())
sort_word = sorted(word, key = lambda x: (len(x), x))
for words in sort_word:
print(words)
풀이
입력된 단어의 중복을 제거하기 위해 set을 사용했고 입력된 단어들을 반복문 집합에 저장했습니다. 이후 sorted()와 lambda를 이용해 정렬 기준을 지정하였으며, 먼저 단어 길이를 기준으로 오름차순 정렬하고 길이가 같을 경우 사전 순으로 정렬되도록 했습니다. 마지막으로 정렬된 결과를 순서대로 출력하였습니다.
This post is licensed under CC BY 4.0 by the author.