https://school.programmers.co.kr/learn/courses/30/lessons/181923
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
답
#include <bits/stdc++.h>
#define max 1e9
using namespace std;
vector<int> solution(vector<int> arr, vector<vector<int>> queries) {
vector<int> answer;
int temp=max;
for(int i=0;i<queries.size();i++){//첫버냊 for문
for(int j=queries[i][0];j<=queries[i][1];j++){//두번쨰 for문
if(arr[j]>queries[i][2]){
temp=min(arr[j],temp);
}
}
if(temp==max){
answer.push_back(-1);
}
else{
answer.push_back(temp);
}
temp=max;
}
return answer;
}
define으로 1e9를 값으로 가진 max를 만들어준다.
vector answer을 만들고
int temp를 max값으로 초기화해서만든다.
queries의 크기만큼 for문을 돌린다.
queries[i][0]부터 queries[i[1]까지 for문을 돌린다
arr[j]가 queries[i][2]보다 큰지 판단하고
크다면 temp와 arr[j]중에 더 작은 값을 temp에 넣어준다.
두번째 for문이 끝나고
temp값이 바뀌지 않았는지 판단한다.
바뀌지 않았으면 답이 존재하지 않는 것이기 때문에 anwer에 -1을 넣어주고
값이 빠귀었다면
temp값을 그대로 answer에 넣어준다.
tmep를 amx로 초기화해준다.
참고
define은 매크로 라고 부르는데
#define max 25
라고 하면 코드에서 나오는 max는 값이 25이라는 것이다.
이 문제에서 define으로 만들어준 max값을 1e9라고 했는데
이건 대부분 알고리즘 문제풀떄 가장 큰값이라고 생각하고 문제를 풀면 다 맞는다.
그러나 특정 상황에선 틀릴수 있다. 제한사항을 잘 보고 하자.
temp에 값을 넣을때 min을 사용했는데
min(a,b);
이렇게 써주면 a와 b중 더 작은 값을 반환해준다.
c++에선
#include <bits/stdc++.h>
|
이 해더파일을 쓰고 사용할 수 ㅇㅆ다.
끝
'c++ > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 부분 문자열 이어 붙여 문자열 만들기(c++) (0) | 2023.12.25 |
---|---|
[프로그래머스] 수열과 구간 쿼리 3(c++) (0) | 2023.12.25 |
[프로그래머스] 수열과 구간 쿼리 4(c++) (0) | 2023.12.25 |
[프로그래머스] 글자 지우기(c++) (0) | 2023.12.25 |
[프로그래머스] 세로 읽기(c++) (0) | 2023.12.25 |