군만두의 IT 공부 일지

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

코딩테스트/백준

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

mandus 2024. 11. 18. 22:18

✅문제: 1181번

📌문제풀이

주어진 단어들을 정렬하여 출력하는 문제임. 단어를 길이순으로 먼저 정렬하고, 길이가 같으면 사전순으로 정렬하며, 중복된 단어는 한 번만 출력해야 함.

  1. 입력 데이터를 리스트로 저장
    • 입력으로 주어진 단어들을 리스트로 읽어옴.
    • 동일한 단어가 여러 번 입력될 수 있으므로 중복을 제거해야 함.
  2. 중복 제거
    • set()을 사용하여 중복된 단어를 제거한 뒤, 리스트로 변환함.
    • 이를 통해 각 단어를 한 번씩만 처리할 수 있음.
  3. 정렬 기준 적용
    • sort() 함수의 key를 사용하여 두 가지 정렬 기준을 설정함.
      1. 단어의 길이순 정렬
      2. 길이가 같은 경우 사전순 정렬
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
  1. 입력 처리 및 중복 제거
    • 입력 리스트: ['but', 'i', 'wont', 'hesitate', 'no', 'more', 'no', 'more', 'it', 'cannot', 'wait', 'im', 'yours']
    • 중복 제거 후: ['but', 'i', 'wont', 'hesitate', 'no', 'more', 'it', 'cannot', 'wait', 'im', 'yours']
  2. 정렬
    • 길이순 정렬: ['i', 'no', 'it', 'im', 'but', 'wont', 'more', 'wait', 'yours', 'cannot', 'hesitate']
    • 길이가 같은 경우 사전순 정렬
# 예제 출력 1
i
im
it
no
but
more
wait
wont
yours
cannot
hesitate

📌후기

  • 정렬과 중복 제거의 기본 개념을 활용하는 쉬운 문제였음.
Comments