코딩테스트/프로그래머스

PCCP 모의고사 2회 - 실습형 로봇

feel2 2023. 2. 18. 10:48
반응형

1. 문제 정의

2. 문제 접근

명령어에 따라 움직여주는 함수만 잘 짜주면 될 것 같다.

3. 문제 풀이

1. x, y, dir 세가지 변수를 가지는 point class 를 정의한다.

2. for 문을 돌면서 명령어를 하나씩 실행한다.

3. 정답을 출력한다.

4. 코드

import java.util.*;

class Solution {
    int[] dx = {0, 1, 0, -1};
    int[] dy = {1, 0, -1, 0};
    Point point;
    
public void move(char command) {
        switch (command) {
            case 'R':
                point.dir = (point.dir + 1) % 4;
                break;
            case 'L':
                point.dir = (point.dir + 3) % 4;
                break;
            case 'G':
                point.x += dx[point.dir];
                point.y += dy[point.dir];
                break;
            case 'B':
                point.x -= dx[point.dir];
                point.y -= dy[point.dir];
        }
    }
    
    public class Point {
        int x, y, dir;

        Point(int x, int y, int dir) {
            this.x = x;
            this.y = y;
            this.dir = dir;
        }
    }
    
      public int[] solution(String command) {
       
       int[] answer = new int[2];
        point = new Point(0, 0, 0);
        for (int i = 0; i < command.length(); i++) move(command.charAt(i));
        answer[0] = point.x;
        answer[1] = point.y;

       return answer;
    }
}

5. 회고

'L' 과 'R' 일 때 방향전환을 어떻게 할지 고민을 많이 하게 되는 문제다. 아직 구현 문제는 어렵다....

반응형