https://programmers.co.kr/learn/courses/30/lessons/77485?language=java#
๋ด๊ฐ ์๊ฐํ ์๊ณ ๋ฆฌ์ฆ
๋ด ํ์ด (2H)
import java.util.Arrays;
class Solution {
int[] dx = {0, 1, 0, -1};
int[] dy = {1, 0, -1, 0};
int[][] origin;
int[][] copy;
public int[] solution(int rows, int columns, int[][] queries) {
ROWS = rows;
// ๋ฐฐ์ด ์ธํ
origin = new int[rows][columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
origin[i][j] = (i * columns) + (j + 1); // debug#4 : rows -> columns
}
}
// debug#1 ๋ฐฐ์ด ์ฐธ์กฐ๋ก ๊ฑธ๋ฉด ์๋จ
copy = new int[rows][columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
copy[i][j] = origin[i][j];
}
}
int[] answers = new int[queries.length];
for (int i = 0; i < queries.length; i++) {
// debug#5 : ์์์ ๊ฐ ๋ณด์ ์ํด์ค
int answer = rotate(queries[i][0] - 1, queries[i][1] - 1, queries[i][2] - 1, queries[i][3] - 1);
// debug#2 : ๋ฐฐ์ด ์ฐธ์กฐ๋ก ๊ฑธ๋ฉด ์๋จ
for (int di = 0; di < rows; di++) {
for (int dj = 0; dj < columns; dj++) {
origin[di][dj] = copy[di][dj];
}
}
answers[i] = answer;
}
return answers;
}
public int rotate(int sx, int sy, int ex, int ey) {
int temp = 0;
int currentX = sx;
int currentY = sy; // debug #3 : sx,sy๋ ๊ณ ์ ๊ฐ์ ๋ฐ๋๋ฉด ์๋จ.
int min = Integer.MAX_VALUE;
// ์ค๋ฅธ์ชฝ ์๋์ชฝ ์ผ์ชฝ ์์ชฝ
while (temp < 4) {
int nextx = currentX + dx[temp];
int nexty = currentY + dy[temp];
// ์ข
๋ฃ์กฐ๊ฑด
if (dx[temp] != 0 && (nextx < sx || nextx > ex)) {
temp ++;
continue;
}
else if (dy[temp] != 0 && (nexty < sy || nexty > ey)) {
temp ++;
continue;
}
copy[nextx][nexty] = origin[currentX][currentY];
min = Math.min(min, origin[currentX][currentY]);
currentX = nextx;
currentY = nexty;
}
return min;
}
}
1. debug #1, #2 : ์๋ฐ์์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ a=b ์ด๋ ๊ฒ ํด๋ฒ๋ฆฌ๋ฉด ์์ ๋ณต์ฌ๋ฅผ ํด๋ฒ๋ฆผ
> Object.clone()์ ํตํด์ 1์ฐจ ๋ฐฐ์ด์ ๊ฒฝ์ฐ ๊น์ ๋ณต์ฌ๊ฐ ๊ฐ๋ฅํ๋
> 2์ฐจ ๋ฐฐ์ด์ ๊ฒฝ์ฐ, ์ด ํจ์๋ ํตํ์ง ์์์ ์ด์ค for๋ฌธ์ ๋๋ฉด์ ํด์ผ ํ์.
2. debug #3 : ๊ฒฝ๊ณ๊ฐ ๋ฐ ๊ธฐ์ค์ ์ธ sx, sy, ex, ey๋ฅผ for๋ฌธ์์ ๋งค๋ฒ ์ด๊ธฐํํด์ค
> currentX, currentY๋ฅผ ๋ง๋ค์ด์ ์ด๊ธฐํํ์ง ์๋๋ก ์์
3. debug #4 : ๋ฐฐ์ด ์ด๊ธฐํํ์๋ ๋ก์ง์ ์ค๋ฅ๊ฐ ์์์
> origin[i][j] = (i * rows) + (j + 1); ์ด๋ ๊ฒ ํ๋ฉด [3,4]์ผ ๋ ์ด๋ ๊ฒ ๋ง๋ค์ด์ง. rows๋ฅผ colums๋ก ๊ณ ์ณ์ผํจ.
1 2 3 4
4 5 6 7
7 8 9 10
10 11 12 13
4. debug#5 : ์์์์๋ ์ฒ์์ด 1,1 ๋ถํฐ ์์ํ์ง๋ง ๋๋ 0,0์์ ์์ํ๊ธฐ ๋๋ฌธ์ ๋ณด์ ๊ฐ์ผ๋ก -1์ ํด์ฃผ์ด์ผ ํจ.
๋ค์์ ํด๋ณผ๋งํ ๊ฒ
1. copy ๋ฐฐ์ด ๋ง๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ ์ฐพ์๋ณด๊ธฐ
2. ํ ํตํด์ ํ์ด๋ณด๊ธฐ
'๊ฐ๋ฐ > ๐ค ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
baekjoon. ๋ฌธ์์ด ํญ๋ฐ (0) | 2022.08.29 |
---|---|
programmers. ๋ค๋จ๊ณ ์นซ์ ํ๋งค (0) | 2022.06.29 |
์๊ณ ๋ฆฌ์ฆ ๊ฟํ. ์๋ฐ (0) | 2022.06.27 |
programmers. ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2022.06.23 |
ํด์ปค๋ญํฌ. Sorting: Bubble Sort (java) (0) | 2022.03.26 |