코딩 테스트 연습/[프로그래머스] Python

[LV.3] 연습문제 > 문자열 내 마음대로 정렬하기 ⭐️

duswjd_data 2025. 7. 8. 10:14

# 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))