LV2 문제이지만 딱히 할 말 없다.
처음엔 문제를 보고 뜨악했지만(쿼리인가? 맙소사 구간에서 최대 최소? 뭐지? 뭐지?)
자세히 보니 요구조건에 시간이나 효율성 등 언급이 없다.
그냥 구현 문제라는 뜻이다.
그냥 배열을 돌리면 된다.
사실 이렇게 배열을 돌려도 각 행 또는 열의 크기의 for문을
딱 4번 돌리기 때문에
그다지 비효율적인 알고리즘도 아니라는 생각이 든다.
딱히 아이디어도 없는 문제기에 스포랄것도 없다.
#include <string>
#include <vector>
using namespace std;
int arr[101][101]={0};
int cw(int ,int,int,int);
vector<int> solution(int rows, int columns, vector<vector<int>> queries) {
for(int i=1;i<=rows;i++){
for(int j=1;j<=columns;j++){
arr[i][j]=(i-1)*columns+j;
}
}
vector<int> answer;
for(int i=0;i<queries.size();i++){
answer.push_back(cw(queries[i][0],queries[i][1],queries[i][2],queries[i][3]));
}
return answer;
}
int cw(int x1,int y1,int x2,int y2){
int tmp = arr[x1][y1];
int tmp2 = tmp;
int m=987654321;
for(int i=y1;i<y2;i++){
tmp2=arr[x1][i+1];
m=min(m,tmp2);
arr[x1][i+1]=tmp;
tmp=tmp2;
}
for(int i=x1;i<x2;i++){
tmp2 = arr[i+1][y2];
m=min(m,tmp2);
arr[i+1][y2]=tmp;
tmp=tmp2;
}
for(int i=y2;i>y1;i--){
tmp2=arr[x2][i-1];
m=min(m,tmp2);
arr[x2][i-1]=tmp;
tmp=tmp2;
}
for(int i=x2;i>x1;i--){
tmp2 = arr[i-1][y1];
m=min(m,tm2);
arr[i-1][y1]=tmp;
tmp=tmp2;
}
return m;
}
물론 저는 쉬운 코드도 복잡하게 짜는 재능이 있으니까
혹시라도 보시는 분들은 절대 제 코드 따라하지 말고
알아서 코드를 쳐보시기 바랍니다.
오늘도 1일 1 PS 완료!