프로그래머스

프로그래머스 - K번째수 [Python]

SS_G 2023. 6. 12. 20:39
반응형

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

 

프로그래머스

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

programmers.co.kr

 

안녕하세요, 오늘은 프로그래머스 'K번째수'문제 풀이를 해보겠습니다.

문제 설명

'K번째수' 문제는 배열에서 특정 구간을 잘라내고 정렬했을 때 K번째로 나타나는 수를 찾는 문제입니다. 배열 array와 명령의 목록을 담은 2차원 배열 commands가 주어집니다. 각 쿼리는 세 숫자 [i, j, k]로 이루어져 있으며, 이는 array의 i번째 숫자부터 j번째 숫자까지 잘라낸 뒤 정렬했을 때, k번째에 있는 수를 구하라는 것을 의미합니다.

 

문제 풀이

Python에서는 슬라이싱과 sort 함수를 활용하여 이 문제를 간단히 해결할 수 있습니다. 아래에 코드를 보겠습니다.

def solution(array, commands):
    answer = []
    res = []
    for command in commands:
        res = array[command[0]-1:command[1]]
        res.sort()
        answer.append(res[command[2]-1])
        
    return answer

이 코드는 각 명령을 수행하기 위해 배열을 적절히 슬라이싱하고, 슬라이싱한 결과를 정렬합니다. 그 후 k번째 수를 결과 리스트에 추가하는 과정을 반복합니다.

 

코드 해설

먼저, commands에 있는 각 명령을 순회하기 위해 for 문을 사용합니다.

각 명령을 명시적으로 command라는 변수에 할당합니다.

그 다음, 각 command를 통해 슬라이싱을 수행하고 그 결과를 res라는 리스트에 할당합니다. 여기서 command[0]-1은 시작 인덱스, command[1]은 종료 인덱스입니다.

다음으로, sort() 함수를 이용해 슬라이싱한 부분 배열(res)을 정렬합니다.

마지막으로, res 리스트의 k번째 값, 즉 res[command[2]-1]을 answer 리스트에 추가합니다. 이는 문제에서 원하는 k번째 수입니다.

마지막으로, answer 리스트를 반환합니다.

'K번째수' 문제는 파이썬의 기본 기능을 활용해 간단하게 해결할 수 있습니다. 파이썬의 슬라이싱과 정렬 기능을 이해하고 있다면 쉽게 접근할 수 있는 문제입니다.

 

감사합니다~

반응형