문제
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
배열의 특정 인덱스 범위 안에서 K번째 수 찾기
풀이
commands내에서 인덱스 범위와 K를 정해주므로,
commands만큼 for문을 반복한다.
그리고 newArray라는 새로운 배열을 만들어서 인덱스 범위 만큼만 저장하고,
해당 newArray 배열을 정렬해서 K번째 수를 찾으면 된다.
이때, commands내에 주는 인덱스 범위는 인덱스 기준으로 0부터 시작하고,
K번째 수는 1부터 시작해서 세는 수이므로 for문 범위에 주의한다.
예시
array = { 1, 2, 3, 4, 5, 6 } , commands = { 3, 5, 2 } 라면
array[3]~ array[5] => newArray = { 4, 5, 6 }
이중 2번째 수는 newArray[2]가 아닌 newArray[1]이다.
newArray[commands[2] - 1]이 K번째 수이다.
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> array, vector<vector<int>> commands) {
vector<int> answer;
for (auto command : commands){
vector<int> newArray;
int k = command[2] - 1;
// 새로운 배열 만들기
for (int i = command[0]-1; i <= command[1]-1; i++)
newArray.push_back(array[i]);
sort(newArray.begin(), newArray.end()); // 오름차순 정렬
// K번째 수 찾기
answer.push_back(newArray[k]);
}
return answer;
}
회고
생각한 대로 구현만 하면 되는 직관적인 문제라서 쉽게 풀렸다.
그렇지만 쉬운 문제라도 문제와 예시를 잘 읽어보는게 중요한 것 같다!!
'PS > 프로그래머스' 카테고리의 다른 글
| [PS] 최소직사각형 (0) | 2025.07.06 |
|---|---|
| [PS] 프로세스 (0) | 2025.07.02 |
| [PS] 기능개발 (2) | 2025.06.30 |
| [PS] 올바른 괄호 (1) | 2025.06.29 |
| [PS] 같은 숫자는 싫어 (0) | 2025.06.29 |