프로그래머스 121687번 실습용 로봇 Java

: ) YOUNG·2024년 2월 28일
1

알고리즘

목록 보기
325/411
post-thumbnail

프로그래머스 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

0개의 댓글