본문 바로가기
Computer Science/Programmers

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

by 기억보다 기록을 2023. 6. 19.
반응형

 

 

 

 

 

문제 설명


정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. 
queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다.

각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.
각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.단,

특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.

제한사항
1 ≤ arr의 길이 ≤ 1,000
   0 ≤ arr의 원소 ≤ 1,000,000

1 ≤ queries의 길이 ≤ 1,000
   0 ≤ s ≤ e < arr의 길이
   0 ≤ k ≤ 1,000,000

 


 

 

입출력 예시


arr queries result
[0, 1, 2, 4, 3] [[0, 4, 2],[0, 3, 2],[0, 2, 2]] [3, 4, -1]

 

 


 

문제 해결


1. In C++

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> arr, vector<vector<int>> queries) {
    vector<int> answer;
    for (auto vec : queries)
    {
        int val = 1000001;
        for (int i = vec[0]; i <= vec[1]; i++)
        {
            if (arr[i] <= vec[2])
                continue;
            val = min(val, arr[i]);
        }
        if (val == 1000001)
            val = -1;
        answer.push_back(val);
    }
    return answer;
}

 

 

2. In Javascript

function solution(arr, queries) {
  const result = [];
  
  for (let i = 0; i < queries.length; i++) {
    const [s, e, k] = queries[i];
    const subArray = arr.slice(s, e + 1);
    const filteredArray = subArray.filter(num => num > k);
    
    if (filteredArray.length === 0) {
      result.push(-1);
    } else {
      const minVal = Math.min(...filteredArray);
      result.push(minVal);
    }
  }
  
  return result;
}

 


 

반응형