[프로그래머스/C++] 수열과 구간 쿼리 2

꿈별·2023년 8월 16일
0

문제풀이

목록 보기
22/52

문제


풀이

#include <string>
#include <vector>

using namespace std;

// 입력받은 가변배열 쿼리[i][j]
// arr[i]~arr[j] 반복하면서 쿼리[][][2] 보다 크면서, 가장 작은 값 있는지 확인. 없으면 -1리턴

vector<int> solution(vector<int> arr, vector<vector<int>> queries) {
    vector<int> answer;
    int result = 0;
    int i = 0, j = 0, k = 0;
    // { 0, 4, 2 }
    // { 0, 3, 2 }
    // { 0, 2, 2 }

    for (int idx = 0; idx < queries.size(); ++idx)
    {
        i = queries[idx][0]; //i부터
        j = queries[idx][1]; //j까지
        k = queries[idx][2];
        result = k;

        for (int z = i; z <= j; ++z)
        {
            // k보다 크고, 아직 대입 안됐음
            // k보다 크고
            // ㄴ 처음이면 무조건 대입
            // ㄴ 이미 값 있으면 더 작은 수일 때만 대입
            if (arr[z] > k)
            {
                if (k == result || arr[z] < result)
                    result = arr[z];
            }
            
        }
        if (k != result)
        {
        answer.push_back(result);
        }
        else
        {
        answer.push_back(-1);
        }
    }
    return answer;
}

0개의 댓글