코딩테스트/백준
[백준] 1181번: 단어 정렬 (파이썬)
mandus
2024. 11. 18. 22:18
✅문제: 1181번

📌문제풀이
주어진 단어들을 정렬하여 출력하는 문제임. 단어를 길이순으로 먼저 정렬하고, 길이가 같으면 사전순으로 정렬하며, 중복된 단어는 한 번만 출력해야 함.
- 입력 데이터를 리스트로 저장
- 입력으로 주어진 단어들을 리스트로 읽어옴.
- 동일한 단어가 여러 번 입력될 수 있으므로 중복을 제거해야 함.
- 중복 제거
- set()을 사용하여 중복된 단어를 제거한 뒤, 리스트로 변환함.
- 이를 통해 각 단어를 한 번씩만 처리할 수 있음.
- 정렬 기준 적용
- sort() 함수의 key를 사용하여 두 가지 정렬 기준을 설정함.
- 단어의 길이순 정렬
- 길이가 같은 경우 사전순 정렬
- sort() 함수의 key를 사용하여 두 가지 정렬 기준을 설정함.
import sys
input = sys.stdin.read
def solution(words):
unique_words = list(set(words))
unique_words.sort(key=lambda word: (len(word), word))
return unique_words
data = input().split()
words = data[1:]
for word in solution(words):
print(word)
위 코드의 예제 입출력 과정은 아래와 같음.
# 예제 입력 1
13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours
- 입력 처리 및 중복 제거
- 입력 리스트: ['but', 'i', 'wont', 'hesitate', 'no', 'more', 'no', 'more', 'it', 'cannot', 'wait', 'im', 'yours']
- 중복 제거 후: ['but', 'i', 'wont', 'hesitate', 'no', 'more', 'it', 'cannot', 'wait', 'im', 'yours']
- 정렬
- 길이순 정렬: ['i', 'no', 'it', 'im', 'but', 'wont', 'more', 'wait', 'yours', 'cannot', 'hesitate']
- 길이가 같은 경우 사전순 정렬
# 예제 출력 1
i
im
it
no
but
more
wait
wont
yours
cannot
hesitate
📌후기
- 정렬과 중복 제거의 기본 개념을 활용하는 쉬운 문제였음.