# lambda 활용

문제
https://school.programmers.co.kr/learn/courses/30/lessons/12915?language=python3
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
- 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬
예) strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬 - 제한 조건
strings는 길이 1 이상, 50이하인 배열
strings의 원소는 소문자 알파벳으로 이루어짐
strings의 원소는 길이 1 이상, 100이하인 문자열
모든 strings의 원소의 길이는 n보다 큼
인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치
→ 리스트의 각 문자열을 n번째 인덱스를 기준으로 오름차순으로 정렬, 만약 n번째 인덱스의 글자가 동일하다면,
그 문자열들을 사전순으로정렬
정답 코드
def solution(strings, n):
return sorted(strings, key=lambda x: (x[n], x))
코드 설명
- sorted() : 주어진 리스트를 정렬하고 새로운 리스트를 반환 (기본적으로 오름차순 정렬)
- sorted() 함수는 key 파라미터에 주어진 기준을 이용하여 리스트를 정렬
- key=lambda x: (x[n], x) : 두 가지 기준으로 정렬하겠다는 의미
- 첫 번째 기준) 각 문자열의 n번째 문자를 기준으로 오름차순 정렬
- 두 번째 기준) 만약 n번째 문자가 동일한 문자열들이 있을 경우, 그 문자열들을 사전순으로 정렬
lambda 함수
- Python에서 익명 함수를 정의할 때 사용하는 키워드 (즉, 이름이 없는 작은 함수를 만들 때 사용)
- lambda는 주로 간단한 계산을 한 줄로 처리할 때 유용
- 기본 구문
lambda는 반드시 하나의 식만을 가질 수 있으며, 그 식의 결과가 함수의 반환 값이 됨
lambda arguments: expression
- arguments: 함수에 전달되는 인수들
- expression: 해당 인수들에 대해 계산하거나 반환할 값을 지정하는 식
- 예시 1) 기본적인 lambda 함수
add = lambda a, b: a + b
print(add(3, 4)) # 7
- 예시 2) 리스트 정렬에 lambda 사용
lambda는 주로 sorted(), map(), filter()와 같은 함수에서 정렬 기준을 지정할 때 자주 사용
words = ["banana", "apple", "kiwi", "orange"]
# 문자열 리스트에서 길이를 기준으로 정렬
sorted_words = sorted(words, key=lambda x: len(x))
print(sorted_words) # ['kiwi', 'apple', 'banana', 'orange']
* sorted() 함수는 key 파라미터에 주어진 기준을 이용하여 리스트를 정렬
- 예시 3) lambda와 filter 사용
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 짝수만 필터링
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # [2, 4, 6, 8]
* numbers는 필터링을 적용할 대상 리스트
* filter 함수는 numbers의 각 요소에 대해 lambda x: x % 2 == 0 함수(짝수인지 확인하는 조건)을 적용
filter 함수
- 주어진 조건에 맞는 요소들만 골라내는 함수
- 기본 구문
filter(function, iterable)
- function: 각 요소에 적용할 조건을 정의하는 함수
- True 또는 False를 반환해야 하며, True를 반환하는 요소만 결과에 포함
- iterable: 조건을 적용할 iterable(리스트, 튜플, 문자열 등)
- 이 iterable의 각 요소가 function에 전달
- filter 함수는 반드시 결과를 리스트나 다른 자료형으로 변환해주어야 함 → 보통 list() 함수나 tuple() 함수로 감싸서 사용
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
'코딩 테스트 연습 > [프로그래머스] Python' 카테고리의 다른 글
| [LV.3] 월간 코드 챌린지 시즌1 > 두 개 뽑아서 더하기 (1) | 2025.07.10 |
|---|---|
| [LV.3] 정렬 > K번째수 (1) | 2025.07.09 |
| [LV.3] 숫자 문자열과 영단어 ⭐ (0) | 2025.07.07 |
| [LV.3] 연습문제 > 시저 암호 (0) | 2025.07.04 |
| [LV.3] 완전탐색 > 최소직사각형 (0) | 2025.07.03 |