다희의 코딩 성장일기
[프로그래머스] level2. 행렬 테두리 회전하기 (자바 JAVA) 본문
[ 문제 ] [프로그래머스] level2. 행렬 테두리 회전하기 (자바 JAVA)
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/77485#
# 접근 방법 및 풀이
- 쉬운 구현 문제다. 시계방향으로 주어진 범위대로 돌리고 값들 중에 min을 찾으면 된다.
- 자세한건 코드참조
# 주의할 점
- 시계방향으로 돌릴 때 잘 확인하기
JAVA 코드
class Solution {
static int map[][];
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int[queries.length];
map = new int[rows][columns];
int num = 1;
for(int i = 0 ; i < rows; i++){
for(int j = 0; j < columns; j++){
map[i][j] = num;
num++;
}
}
for(int i = 0; i < queries.length; i++){
int startR = queries[i][0]-1;
int startC = queries[i][1]-1;
int endR = queries[i][2]-1;
int endC = queries[i][3]-1;
answer[i] = move(startR, startC, endR, endC);
}
return answer;
}
public static int move(int startR, int startC, int endR, int endC ){
int min = map[startR][endC];
int tmp = map[startR][endC];
//오
for(int j = endC; j > startC; j--){
map[startR][j] = map[startR][j-1];
min = Math.min(min,map[startR][j]);
}
//위
for(int i = startR; i < endR; i++){
map[i][startC] = map[i+1][startC];
min = Math.min(min,map[i][startC]);
}
//왼
for(int j = startC; j < endC; j++){
map[endR][j] = map[endR][j+1];
min = Math.min(min,map[endR][j]);
}
//아래
for(int i = endR; i > startR; i--){
map[i][endC] = map[i-1][endC];
min = Math.min(min, map[i][endC]);
}
map[startR+1][endC] = tmp;
return min;
}
}
REVIEW
처음 짠 대로 바로 통과하면 기분이 좋다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] level2. 순위 검색 (자바 JAVA) (0) | 2021.08.30 |
---|---|
[프로그래머스] level2. 삼각 달팽이 (자바 JAVA) (0) | 2021.08.29 |
[프로그래머스] level2. 짝지어 제거하기 (자바 JAVA) (0) | 2021.08.28 |
[프로그래머스] level2. 피보나치 수 (자바 JAVA) (0) | 2021.08.27 |
[프로그래머스] level2. JadenCase 문자열 만들기 (자바 JAVA) (0) | 2021.08.27 |
Comments