ㄴ 링크
문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 하여라.
예시)
u, e, a → ["car", "bed", "sun"]c, c, x → cdx가 마지막. c가 같은 abce, abcd는 사전순으로 정렬 → ["abcd", "abce", "cdx"]파이썬 내장함수와 기본 기능에 충실할 것
sorted 함수는 문자열 리스트를 정렬할 수 있고, key로 함수를 받아 정렬 기준을 바꿀 수 있다.
이 두 가지를 떠올리며 풀어 보자.
1. strings의 각 문자열을 [n번째 글자, 원본 문자열] 쌍으로 묶는다.
2. 쌍들을 정렬한다. n번째 글자로 먼저 비교하고, 같으면 원본 문자열의 사전순으로 비교한다.
3. 정렬된 쌍에서 원본 문자열만 꺼내 반환한다.
# n번째 글자와 원본 문자열을 쌍으로 묶어 정렬하는 함수
def make_sorted_pairs(strings, n):
pairs = []
for s in strings:
pairs.append([s[n], s])
pairs.sort()
return pairs
# 실행
def solution(strings, n):
pairs = make_sorted_pairs(strings, n)
answer = []
for pair in pairs:
answer.append(pair[1]) # 정렬된 문자열에서 원본 문자열만 남겨두기
return answer
람다 함수를 이용한 풀이
def strange_sort(strings, n):
return sorted(strings, key=lambda x: x[n])
strings = ["sun", "bed", "car"]
print(strange_sort(strings, 1))
람다 함수를 쓸 수 있는 상황에서 람다 함수를 잘 떠올리지 못하는 경우가 많다.
코드가 길어질 듯한 상황에서는 람다함수로 보기 좋은 코드를 작성해보는 것도 좋을 듯 하다.