본문 바로가기
프로그래밍/프로그래머스

C++ K번째수(프로그래머스)

by devsu 2020. 5. 31.

프로그래머스_K번째수

https://programmers.co.kr/

 

정렬(sort)

문제 해석

 

이 문제를 풀기위해 이해해야 할 내용은 다음과 같습니다.

 

목표

i~j번째 원소를 정렬하여 k번째의 숫자를 구한다

방법

1. 배열을 필요한 정보만 추출한다.

2. 배열을 오름차순으로 정렬한다.

3. 원하는 위치의 정보를 추출한다.

 

결과

i~j번째 원소를 정렬하여 k번째의 숫자를 출력

 

통과한 코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(vector<int> array, vector<vector<int>> commands) {
    vector<int> answer;
    vector<int> arr;
    vector<int> comm;
    for (vector<vector<int>>::iterator iter = commands.begin(); iter != commands.end(); iter++)
    {
        comm = *iter;
        int i = comm[0]-1;
        int j = comm[1]-1;
        int k = comm[2]-1;
        for (int n = i; n < j+1; n++)
        {
            arr.push_back(array[n]);
        }
        sort(arr.begin(), arr.end());
        answer.push_back(arr[k]);
        arr.clear();
    }
    return answer;
}

풀이과정

1. sort할 vector를 생성하여 i~j까지 담는다

2. 정렬한다.

3. k번째 위치의 값을 answer에 추가한다.