✅ 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는 간결한 익명 함수로, 정렬 기준이나 간단한 연산에 유용
✅ lambda와 sorted()를 활용하여 문제 해결 가능
✅ 백준 1181번 문제에서 lambda를 사용해 단어 길이 + 사전순 정렬 구현
'코딩라이브러리 > 파이썬' 카테고리의 다른 글
파이썬 중복제거 set 집합함수 (with 백준 2776) (0) | 2024.05.29 |
---|---|
파이썬 Counter (with 백준 10815, 10816) (0) | 2024.05.28 |
파이썬 정렬 sort, sorted (with 백준 2750, 5597, 1181) (0) | 2024.05.24 |
파이썬 for while 조건문 (with 백준 2446, 2522) (2) | 2024.05.23 |
파이썬 리스트 배열의 얕은 복사(copy), 깊은 복사(deepcopy) 차이점 (0) | 2024.05.22 |