[프로그래머스 / C++] K번째수

YH·2023년 7월 25일
0

문제

K번째수 : 문제 링크


문제 분석

  • 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구한다. commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수 작성
  • 배열의 오름차순 정렬을 위해 sort() 함수를 사용할 것 이므로 algorithm 헤더를 포함
  • for loop는 주어진 commands수 만큼 수행되고, int형 벡터 slice에 i번째 숫자부터 j번째 숫자까지 추출하여 저장. sort() 함수를 사용하여 배열내 원소를 오름차순으로 정렬. slice 배열내에 k번째에 있는 수 answer에 저장하고 for loop이 끝나면 answer를 return

algorithm 헤더의 sort() 함수 사용법
void sort(T start, T end, Compare comp); //comp 인자가 공란이면 오름차순 정렬

  • sort(v.begin(), v.end(), compare); // 사용자 정의 함수 사용
  • sort(v.begin(), v.end(), greater<자료형>()); // 내림차순
  • sort(v.begin(), v.end(), less<자료형>()); // 오름차순

풀이

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;

    for(int i = 0; i < commands.size(); i++) {
        vector<int> slice(array.begin() + commands[i][0] - 1, array.begin() + commands[i][1]);
        sort(slice.begin(), slice.end());
        answer.push_back(slice[commands[i][2] - 1]);
    }
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글