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번째수' 문제는 파이썬의 기본 기능을 활용해 간단하게 해결할 수 있습니다. 파이썬의 슬라이싱과 정렬 기능을 이해하고 있다면 쉽게 접근할 수 있는 문제입니다.
감사합니다~
'프로그래머스' 카테고리의 다른 글
프로그래머스 - 가장 가까운 같은 글자 [Python] (1) | 2023.06.18 |
---|---|
프로그래머스 - 푸드 파이트 대회 [Python] (0) | 2023.06.12 |
프로그래머스 - 두개 뽑아서 더하기 [Python] (1) | 2023.06.11 |
프로그래머스 - 시저 암호 [Python] (0) | 2023.06.10 |
프로그래머스 - 삼총사 [Python] (1) | 2023.06.09 |