https://school.programmers.co.kr/learn/courses/30/lessons/12915
✳️ 코드 작성
🤔 코드 아이디어
1. 사전 순으로 기존 strings 리스트를 정렬한다. (sort 이용)
2. 사전 순으로 정렬되어 있는 리스트를 다시 n번째 문자를 기준으로 정렬한다. (sorted 이용)
💟 코드 풀이
def solution(strings, n):
strings.sort() # 1. 먼저 사전순으로 정렬
return sorted(strings, key=lambda x: x[n]) # 2. n번째 문자를 기준으로 다시 정렬
🟣 strings.sort()
- 문자열이 담긴 리스트 strings를 사전 순서(알파벳순)대로 정렬
- sort() 함수는 리스트 자체를 정렬, 이때 별도의 기준(key)이 없으므로 기본적으로 문자열의 알파벳 순서에 따라 정렬
- sort() 함수는 in-place 방식으로 작동되어 원본 리스트 자체가 사전순으로 변경되어 있는 상태
- 그래서 따로 별도로 새로운 변수에 저장하지 않아도 strings 리스트는 사전순으로 정렬되어 있을 것!
🟣 sorted(strings, key=lambda x: x[n])
- sorted() 함수는 사전순으로 정렬되어 있는 strings 리스트를 정렬
- 여기서 key=lambda x: x[n] 부분은 각 문자열의 n번째 문자를 기준으로 정렬하겠다는 의미
- lambda x: x[n]는 리스트의 각 요소 x에서 n번째 문자를 반환하는 익명 함수로 이 값이 정렬의 기준이 됨
- sorted() 함수는 원본 리스트를 변경하지 않고 새로운 정렬된 리스트를 반환
🤓 lambda 함수
lambda 인자: 표현식
- lambda : 파이썬에서 익명 함수를 정의할 때 사용하는 키워드
- 인자 : 함수에 전달되는 입력값. 여러 개의 인자를 사용할 수 있음
- 표현식 : 인자로 받은 값을 바탕으로 계산하거나 변환한 결과를 반환하는 부분
💠 예시
🔵 입력 예시
strings = ["sun", "bed", "car"]
n = 1
print(solution(strings, n))
🔵 작동 원리
1️⃣ 사전순으로 정렬
- "bed", "car", "sun" -> 이 순서대로 정렬 됨
2️⃣ n번째 문자를 기준으로 정렬
- sorted() 함수가 리스트의 각 요소를 순서대로 lambda 함수에 전달
- 첫 번째 요소 "bed" → lambda "bed" : "bed"[1] → 결과 "e"
- 두 번째 요소 "car" → lambda "car" : "car"[1] → 결과 "a"
- 세 번째 요소 "sun" → lambda "sun" : "sun"[1] → 결과 "u"
- lambda 함수에서 반환된 값들을 기준으로 sorted() 함수가 리스트를 정렬
- "e" → "a" → "u" 순서대로 정렬하므로, "car" → "bed" → "sun" 순서가 됨
🔵 최종 반환
result = ["car", "bed", "sun"]
# ["car", "bed", "sun"]
'📒 Today I Learn > 🐍 Python' 카테고리의 다른 글
[Python] 두 개 뽑아서 더하기 (0) | 2024.09.20 |
---|---|
[Python] k번째 수 (0) | 2024.09.19 |
[Python] 숫자 문자열과 영단어 (딕셔너리 이용) (0) | 2024.09.12 |
[Python] 시저 암호 (chr, ord) (0) | 2024.09.11 |
[Python] 최소 직사각형 (0) | 2024.09.10 |