❓문제
rows X columns 크기의 행렬 (x1, y1, x2, y2) 영역에 해당하는 직사각형의 테두리 숫자를 시계방향으로 회전
🖐️손코딩
main():
matrix[rows][columns]
num = 1
answer[queries.length]
for(i: 0 ~ rows-1)
for(j: 0 ~ columns-1)
matrix[i][j] = num
num++
for(i : queries)
left, right, top, bottom
temp = matrix[top][left]
min = temp
for(x: top+1 ~ bottom)
matrix[x-1][left] = matrix[x][left]
min = Math.min(min, matrix[x-1][left])
for(x: left+1 ~ right)
matrix[bottom][x-1] = matrix[bottom][x]
min = Math.min(min, matrix[bottom][x-1])
for(x: bottom-1 ~ top)
matrix[x+1][right] = matrix[x][right]
min = Math.min(min, matrix[x+1][right])
for(x: right-1 ~ left+1)
matrix[top][x+1] = matrix[top][x]
min = Math.min(min, matrix[top][x+1])
matrix[top][left+1] = temp
answer[i] = min
👩💻구현 코드
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
int[][] matrix = new int[rows][columns];
int num = 1;
for(int i = 0; i<rows; i++){
for(int j = 0; j<columns; j++){
matrix[i][j] = num;
num++;
}
}
for(int i = 0; i<queries.length; i++){
int[] query = queries[i];
int top = query[0]-1;
int left = query[1]-1;
int bottom = query[2]-1;
int right = query[3]-1;
int temp = matrix[top][left];
int min = temp;
for(int x=top+1; x<=bottom; x++){
matrix[x-1][left] = matrix[x][left];
min = Math.min(min, matrix[x-1][left]);
}
for(int x = left+1; x<=right; x++){
matrix[bottom][x-1] = matrix[bottom][x];
min = Math.min(min, matrix[bottom][x-1]);
}
for(int x = bottom-1; x>= top; x--){
matrix[x+1][right] = matrix[x][right];
min = Math.min(min, matrix[x+1][right]);
}
for(int x = right-1; x>= left+1; x--){
matrix[top][x+1] = matrix[top][x];
min = Math.min(min, matrix[top][x+1]);
}
matrix[top][left+1] = temp;
answer[i] = min;
}
return answer;
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/77485
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'CS & Algorithm > Algorithm' 카테고리의 다른 글
| [BFS] 리코쳇 로봇 (0) | 2026.07.25 |
|---|---|
| [BFS] 석유 시츄 (0) | 2026.07.25 |
| [Programmers:DFS/BFS] 여행경로 (0) | 2026.07.06 |
| [Programmers:DP] 도둑질 (0) | 2026.07.01 |
| [Programmers:DP] 사칙연산 (0) | 2026.07.01 |