문제
제한 사항
입출력
문제풀이
import java.util.*;
class Solution {
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int [queries.length];
int[][] arr = new int[rows][columns];
int tmp =1;
for(int i = 0 ; i < rows;i++){
for(int j = 0 ; j < columns;j++){
arr[i][j]=tmp;
tmp++;
}
}
int x1=0,x2=0,y1=0,y2=0;
for(int t = 0 ; t < queries.length;t++){
x1 = queries[t][0]-1;
y1 = queries[t][1]-1;
x2 = queries[t][2]-1;
y2 = queries[t][3]-1;
int min = arr[x1][y1];
int temp = arr[x1][y1];
// 첫번째 세로
for(int i = x1;i<x2;i++){
arr[i][y1]=arr[i+1][y1];
min = Math.min(arr[i][y1],min);
}
// 첫번째 가로
for(int i = y1;i<y2;i++){
arr[x2][i]=arr[x2][i+1];
min = Math.min(arr[x2][i],min);
}
// 두번째 세로
for(int i = x2;i>x1;i--){
arr[i][y2]=arr[i-1][y2];
min = Math.min(arr[i][y2],min);
}
// 두번째 가로
for(int i = y2;i>y1+1;i--){
arr[x1][i]=arr[x1][i-1];
min = Math.min(arr[x1][i],min);
}
arr[x1][y1+1]=temp;
answer[t]=min;
}
return answer;
}
}
※ 내 생각
이 문제는 구현을 하는 문제입니다.
먼저 주어진 크기 만큼의 배열을 만들어 줍니다.
그리고 for문을 이용해서 queries 의 각각의 원소의 좌표를 얻습니다.
얻어낸 좌표를 통해서 상 하 좌 우 각각을 for문을 이용하여 한칸씩 옴겨줍니다.
옴겨지는 과정에서 최솟값을 파악하고 작업이 끝나면 answer에 값을 넣어줍니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 타겟 넘버(자바) / DFS (0) | 2021.10.22 |
---|---|
[프로그래머스] 다단계 칫솔 판매(자바) / 자료구조 & 구현 (0) | 2021.10.17 |
[프로그래머스] 로또의 최고 순위와 최저 순위(자바) / 구현 (0) | 2021.10.15 |
[프로그래머스] 카펫 (자바) / 완전 탐색 (0) | 2021.10.04 |
[프로그래머스] 이중 우선 순위 큐(자바) / 힙 (0) | 2021.10.01 |