본문 바로가기
Python

본 캠프 Python 알고리즘 코드카타 12일차

by Data 학습자 2024. 7. 12.

오늘 풀어본 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12915

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문자열로 구성된 리스트 strings와 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하는 문제입니다. 예를 들어, strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다.

 

문제를 풀어본 순서

  1. 리스트를 재정렬을 해야하니 sorted를 사용해서 먼저 재배치를 할 조건식을 만든다
  2. 조건식의 키 값을 lambda 익명함수를 사용해 비교를 하기위한 문자열의 원하는 위치의 값(n)으로 지정한다.
  3. 조건대로 재배열이 완료된 리스트를 결과값으로 반환할 저장소에 집어넣고 결과값을 반환시킨다.
def solution(strings, n):
    
    answer = sorted(strings, key=lambda a: (a[n], a))
    
    return answer


lambda 함수를 사용하여 정렬 키를 지정하는 방법을 간단하게 설명하자면

  1. a[n]: 문자열 a의 n번째 문자를 반환합니다.
  2. a: 문자열 a 자체를 반환합니다.

따라서 lambda a: (a[n], a)는 두 개의 값을 튜플로 반환합니다:

  • 첫 번째 값: 문자열의 n번째 문자
  • 두 번째 값: 문자열 자체

그렇기 때문에 a: (a[n]) 이런 식으로 코드를 짜게 된다면 n번째 코드의 값이 같다면 재배치가 이루어 지지 않기 때문에 번거롭더라도 a: (a[n], a) 라고 수식을 적어야 한다.

오늘 배운 점:

  • sorted() 함수와 람다 함수를 함께 사용하여 복합적인 정렬 기준을 설정하는 방법을 배웠습니다..
  • 문자열의 특정 인덱스를 기준하여 정렬하는 방법을 익혔습니다.
  • 리스트의 특정 인덱스를 추출하여 활용하는 방법으로는 enumerate는 활용하기 어렵다는 사실을 알게되었습니다.