프로그래머스 121687번
https://school.programmers.co.kr/learn/courses/15009/lessons/121687
switch(c) {
case 'R' :
// 오른쪽으로 90도 회전
dir = (dir + 1) % 4;
break;
case 'L' :
// 왼쪽으로 90도 회전
// 오른쪽으로 3번 회전하는 것과 같다.
dir = (dir + 3) % 4;
break;
case 'G' :
x += dirX[dir];
y += dirY[dir];
break;
case 'B' :
x -= dirX[dir];
y -= dirY[dir];
break;
}
오른쪽으로 회전은 + 1을 하고 4로 나눈 나머지로 계산하면 된다.
왼쪽은 오른쪽으로 3번 회전하는것과 같은 것으로 + 3을 해주고 4로 나눈 나머지값을 구하면 된다.
import java.util.*;
class Solution {
private static int[] dirX = {0, 1, 0, -1}; // 상 우 하 좌
private static int[] dirY = {1, 0, -1, 0};
private static char[] commands;
public int[] solution(String command) {
int[] answer = {};
int x = 0;
int y = 0;
int dir = 0;
for(char c : command.toCharArray()) {
switch(c) {
case 'R' :
// 오른쪽으로 90도 회전
dir = (dir + 1) % 4;
break;
case 'L' :
// 왼쪽으로 90도 회전
// 오른쪽으로 3번 회전하는 것과 같다.
dir = (dir + 3) % 4;
break;
case 'G' :
x += dirX[dir];
y += dirY[dir];
break;
case 'B' :
x -= dirX[dir];
y -= dirY[dir];
break;
}
}
return new int[] {x, y};
} // End of solution()
} // End of Solution class