728x90
https://programmers.co.kr/learn/courses/30/lessons/77485
문제 풀이
쉬운 편의 구현 문제이다.
map[x1][y1+1]에서 값이 다르기 때문에 마지막에 추가해주는 것만 조심하면 된다.
느낀 점
처음에는 너무 간단한 구현이지만 코드가 길어서 의심을 했다. 근데 정말 저게 다다!
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int map[101][101];
void reset(int rows, int columns) {
int num = 1;
for (int i = 1; i <= rows;i++) {
for (int j = 1; j <= columns;j++) {
map[i][j] = num++;
}
}
}
int get_num(vector<int> query) { // 2, 2, 5, 4
int result = 10001;
int tmp = map[query[0]][query[1]];
for (int i = query[0]; i < query[2]; i++) {
map[i][query[1]] = map[i + 1][query[1]];
result = min(result, map[i][query[1]]);
}
for (int i = query[1]; i < query[3]; i++) {
map[query[2]][i] = map[query[2]][i + 1];
result = min(result, map[query[2]][i]);
}
for (int i = query[2]; i > query[0];i--) {
map[i][query[3]] = map[i - 1][query[3]];
result = min(result, map[i][query[3]]);
}
for (int i = query[3]; i > query[1]; i--) {
map[query[0]][i] = map[query[0]][i - 1];
result = min(result, map[query[0]][i]);
}
map[query[0]][query[1] + 1] = tmp;
result = min(result, tmp);
return result;
}
vector<int> solution(int rows, int columns, vector<vector<int>> queries) {
vector<int> answer;
reset(rows, columns);
for (auto query : queries) {
answer.push_back(get_num(query));
}
return answer;
}
'문제 풀이 > 프로그래머스 (Programmers)' 카테고리의 다른 글
[C++] 프로그래머스 : 튜플 (0) | 2021.11.08 |
---|---|
[C++] 프로그래머스 : [1차] 뉴스 클러스터링 (0) | 2021.10.24 |
[C++] 프로그래머스 : 위클리 챌린지 (9주차) (0) | 2021.10.10 |
[C++] 프로그래머스 : 짝지어 제거하기 (0) | 2021.10.09 |
[C++] 프로그래머스 : 타겟 넘버 (0) | 2021.10.08 |
댓글