본문 바로가기
백준 - 파이썬/단계별 - 13 (정렬)

*[백준/파이썬] 1181번 단어 정렬 | lambda함수 정렬키

by miiinn 2025. 10. 22.

 

[최종 코드]

import sys

n = int(input())
words = [input() for _ in range(n)]

# 중복 제거
words_set = set(words)
words = list(words_set)

# 정렬
words.sort(key=lambda x: (len(x), x))

sys.stdout.write('\n'.join(map(str, words)) + '\n')

[핵심 부분]

words.sort(key=lambda x: (len(x), x))

📝 정렬 키 원리 분석: key=lambda x: (len(x), x)

이 코드는 리스트 word_list의 각 요소(문자열)를 정렬하기 전에, **임시로 사용할 정렬 기준(Key)**을 만들어내는 역할을 합니다.

1. lambda x: (...) (임시 키 생성)

lambda는 이름 없는 함수(익명 함수)를 만드는 Python 문법입니다.

  • x: word_list의 각 요소, 즉 하나의 문자열을 의미합니다. (예: "banana")
  • (...): 이 함수가 반환하는 값, 즉 정렬 기준이 될 튜플을 의미합니다. (예: (6, "banana"))

2. (len(x), x) (튜플을 이용한 복합 기준)

lambda 함수가 (len(x), x)라는 튜플을 반환하는 것이 핵심입니다.

정렬 함수(여기서는 .sort())는 이 튜플을 기준으로 정렬을 수행할 때, 튜플의 요소를 왼쪽에서 오른쪽으로 순차적으로 비교합니다.

튜플 요소 의미 비교 순서 (우선순위)
len(x) 문자열의 길이 1순위 (가장 먼저 비교)
x 문자열 자체 2순위 (길이가 같을 때 비교)

3. 실제 정렬 시뮬레이션

다음 단어 리스트를 정렬한다고 가정해 봅시다: ["apple", "kiwi", "zoo", "banana"]

원본 단어 (x) 길이 (len(x)) lambda가 반환하는 정렬 키
"apple" 5 (5, "apple")
"kiwi" 4 (4, "kiwi")
"zoo" 3 (3, "zoo")
"banana" 6 (6, "banana")