코딩라이브러리/파이썬

파이썬 람다 함수 lambda (with 백준 1181)

유니네 라이브러리 2024. 5. 27. 19:03

lambda는 익명 함수로, 한 줄로 간결하게 표현 가능

단순한 연산, 정렬, map(), filter() 등의 함수에서 자주 사용됨

백준 1181번 문제에서 lambda를 활용하면 효과적으로 정렬 가능

 

📌 lambda (람다) 함수란?

 

lambda이름 없이 즉석에서 정의하는 간단한 함수이다.

주로 간단한 연산이나 정렬 기준을 정의할 때 사용된다.

 

📌 기본 문법:

lambda 매개변수: 표현식
  • lambda a, b: a + b → a와 b를 더하는 함수
  • 일반적인 함수처럼 def로 정의하지 않고, 즉석에서 사용 가능

📌 사용 예시:

add = lambda a, b: a + b
print(add(3, 5))  # 8

 

📌 lambda 함수 예제

 

✅ 리스트에서 거듭제곱 값 저장

# 일반적인 for문 사용
a = []
for i in range(5):
    a.append(i**2)
print(a)  
# [0, 1, 4, 9, 16]

# lambda와 map() 사용
a = list(map(lambda i: i**2, range(5)))
print(a)  
# [0, 1, 4, 9, 16]

 

✅ 정렬에서 lambda 활용

 

📌 기본 정렬:

a = [[1, '김씨'], [2, '이씨'], [4, '윤씨'], [3, '박씨']]
a.sort()  # 첫 번째 요소(숫자) 기준 정렬
print(a)  
# [[1, '김씨'], [2, '이씨'], [3, '박씨'], [4, '윤씨']]

 

📌 lambda를 활용한 문자열 기준 정렬:

a.sort(key=lambda x: x[1])  # 두 번째 요소(이름) 기준 정렬
print(a)  
# [[1, '김씨'], [3, '박씨'], [4, '윤씨'], [2, '이씨']]

 

📌 lambda 활용 - 백준 문제 풀이

 

🔹 백준 1181번 - 단어 정렬

 

[문제 링크] 🔗 백준 1181번

 

💡 문제 설명

  • 단어 N개가 주어짐.
  • 중복을 제거한 후 정렬해야 함.
  • 정렬 기준: 
    1. 길이가 짧은 단어 우선
    2. 길이가 같으면 사전순 정렬

🔹 코드 구현

#입력값 받기
N = int(input())
strList = [input() for _ in range(N)]

#중복제거 set() 사용한다.
a=list(set(strList))

#길이가 짧은것부터 사전순으로 정렬
rtn=sorted(a, key=lambda x: (len(x),x))

#결과 출력
print(*rtn, sep="\n")

 

🔹 실행 예제

 

입력

13
but
i
wont
hesitate
no
more
no
more
it
cannot
wait
im
yours

 

출력

i
im
it
no
but
more
wait
wont
yours
cannot
hesitate

 

📌 마무리 - 정리

 

lambda는 간결한 익명 함수로, 정렬 기준이나 간단한 연산에 유용

lambdasorted()를 활용하여 문제 해결 가능

백준 1181번 문제에서 lambda를 사용해 단어 길이 + 사전순 정렬 구현