
프로그래머스 문제 중 '문자열 내 마음대로 정렬하기'라는 문제를 만났습니다.
문제는 다음과 같습니다.
문제 설명
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
위와 같은 문제를 lambda를 사용하면 아래와 같이 매우 쉽게 풀 수 있습니다.
def solution(strings, n): answer = sorted(strings, key = lambda x : (x[n], x)) return answerlambda식은
lambda 인자 : 표현식이렇게 사용됩니다.
간단하게 말해서 인자에 들어간 값을 표현식으로 연산하는 것입니다.위에 함수를 보면
sorted가 사용된 것을 볼 수 있습니다.
sorted에 정렬할 리스트를 넣어주고key = lambda x : x[n]을 넣어주면,
각 요소 값의[n]번째 인덱스를 기준으로 정렬된 리스트를 얻게 됩니다.
맨 뒤에 x를 넣어준 이유는 인덱스가 동일 값일 경우에 이후 사전순으로 다시 정리하기 위함입니다.
사실 lambda를 쓰지 않고 구현한 코드를 보여주고 싶었으나.. 아직 못해서 완성되면 올리겠슴당~