728x90
반응형
문제
분석
- 분석이 좀 필요한 문제 였다.
- 2,2,5,4 가 주어 졌을때 회전 시킨다 문제를 보면 한칸씩 시계 방향으로 회전 시키면 될것 같다.
어떻게 기준을 잡을 것인가?
Point1(2,2), Point2(5,4), StartPoint(point1.x, point1.y) 로 기준을 잡는다.
어떻게 위치를 바꿔 나갈 것인가?
step1
오른쪽으로 이동: StartPoint y 가 point2 의 y 와 같아 질때까지 y 증가
step2
아래로 이동: StartPoint x 가 point2 의 x 와 같아 질때까지 x 증가
step3
왼쪽으로 이동: StartPoint y 가 point1 의 y 와 같아 질때까지 y 감소
step3
위로 이동: StartPoint x 가 point1 의 x 와 같아 질때까지 x 감소
구현
class Solution {
public int map[][] = new int[100][100];
public class Point {
public int x;
public int y;
Point(int x, int y) {
this.x = x-1;
this.y = y-1;
}
}
public void solve(Point p1, Point p2, int[]answer, int rotateCoount) {
int preNumber;
int x = p1.x;
int y = p1.y;
int dir = 0;
int currentNumber = map[p1.x][p1.y];
int min = map[p1.x][p1.y];
while(true) {
if (dir == 0 && (p2.y != y)) {
++y;
} else if ( dir == 1 && (p2.x != x)) {
++x;
} else if (dir == 2 && (p1.y != y)) {
--y;
} else if ( dir == 3 && (p1.x != x)) {
--x;
}
if (dir == 0 && p2.y == y) {
dir = 1;
} else if ( dir == 1 && p2.x == x) {
dir = 2;
} else if (dir == 2 && p1.y == y) {
dir = 3;
}
preNumber = map[x][y];
map[x][y] = currentNumber;
currentNumber = preNumber;
if (min > currentNumber) {
min = currentNumber;
}
if (dir == 3 && x == p1.x && y == p1.y) {
break;
}
}
answer[rotateCoount] = min;
}
public void init(int rows, int columns) {
int num = 1;
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
map[i][j] = num++;
}
}
}
public int[] solution(int rows, int columns, int[][] queries) {
int[] answer = new int [queries.length];
init(rows, columns);
for(int i = 0; i < queries.length; i++ ) {
Point orgP1 = new Point(queries[i][0], queries[i][1]);
Point orgP2 = new Point(queries[i][2], queries[i][3]);
Point startPoint = new Point(queries[i][0], queries[i][1]);
solve(orgP1, orgP2, answer, i);
}
return answer;
}
}
결과
문제
https://school.programmers.co.kr/learn/courses/30/lessons/77485?language=java
728x90
반응형
'Algorithm > 프로그래머스 알고리즘' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 (0) | 2021.10.19 |
---|---|
[프로그래머스] 정수 삼각형 (0) | 2021.10.18 |
[프로그래머스] 영어끝말잇기 (0) | 2021.10.15 |
[프로그래머스] tuple (0) | 2021.09.07 |
[프로그래머스] 피보나치 (0) | 2021.08.10 |
댓글