시뮬레이션
https://school.programmers.co.kr/learn/courses/30/lessons/87391
class Solution {
public long solution(int n, int m, int x, int y, int[][] queries) {
long top = x, bottom = x, left = y, right = y;
// 역으로 탐색
for (int i = queries.length - 1; i >= 0; i--) {
int command = queries[i][0];
int dx = queries[i][1];
if (command == 0) { // 좌
if (left != 0) {
left += dx;
}
right = Math.min(m - 1, right + dx);
} else if (command == 1) { // 우
if (right != m - 1) {
right -= dx;
}
left = Math.max(0, left - dx);
} else if (command == 2) { // 상
if (top != 0) {
top += dx;
}
bottom = Math.min(n - 1, bottom + dx);
} else { // 하
if (bottom != n - 1) {
bottom -= dx;
}
top = Math.max(0, top - dx);
}
// 배열을 벗어난 경우 답을 도출할 수 없음
if (left >= m || right < 0 || top >= n || bottom < 0) {
return 0;
}
}
return (right - left + 1) * (bottom - top + 1);
}
}
if (command == 0) { // 좌
if (left != 0) {
left += dx;
}
right = Math.min(m - 1, right + dx);
}
// 배열을 벗어난 경우 답을 도출할 수 없음
if (left >= m || right < 0 || top >= n || bottom < 0) {
return 0;
}
2시간