오늘 풀어본 문제
https://school.programmers.co.kr/learn/courses/30/lessons/12915
문자열로 구성된 리스트 strings와 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하는 문제입니다. 예를 들어, strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.
문제를 풀어본 순서
- 리스트를 재정렬을 해야하니 sorted를 사용해서 먼저 재배치를 할 조건식을 만든다
- 조건식의 키 값을 lambda 익명함수를 사용해 비교를 하기위한 문자열의 원하는 위치의 값(n)으로 지정한다.
- 조건대로 재배열이 완료된 리스트를 결과값으로 반환할 저장소에 집어넣고 결과값을 반환시킨다.
def solution(strings, n):
answer = sorted(strings, key=lambda a: (a[n], a))
return answer
lambda 함수를 사용하여 정렬 키를 지정하는 방법을 간단하게 설명하자면
- a[n]: 문자열 a의 n번째 문자를 반환합니다.
- a: 문자열 a 자체를 반환합니다.
따라서 lambda a: (a[n], a)는 두 개의 값을 튜플로 반환합니다:
- 첫 번째 값: 문자열의 n번째 문자
- 두 번째 값: 문자열 자체
그렇기 때문에 a: (a[n]) 이런 식으로 코드를 짜게 된다면 n번째 코드의 값이 같다면 재배치가 이루어 지지 않기 때문에 번거롭더라도 a: (a[n], a) 라고 수식을 적어야 한다.
오늘 배운 점:
- sorted() 함수와 람다 함수를 함께 사용하여 복합적인 정렬 기준을 설정하는 방법을 배웠습니다..
- 문자열의 특정 인덱스를 기준하여 정렬하는 방법을 익혔습니다.
- 리스트의 특정 인덱스를 추출하여 활용하는 방법으로는 enumerate는 활용하기 어렵다는 사실을 알게되었습니다.
'Python' 카테고리의 다른 글
본 캠프 Python 알고리즘 코드카타 11일차 (0) | 2024.07.06 |
---|---|
본 캠프 Python 알고리즘 코드카타 10일차 (0) | 2024.07.06 |
본 캠프 Python 알고리즘 코드카타 9일차 (0) | 2024.07.02 |
본 캠프 Python 알고리즘 코드카타 8일차 (0) | 2024.07.01 |
본 캠프 Python 알고리즘 코드카타 7일차 (0) | 2024.06.30 |