[Java] PCCP 모의고사 2회 문제풀이

민지·2026년 7월 21일

Java

목록 보기
22/22

1️⃣ 1. 실습용 로봇

if 문 사용

class Solution {
    public int[] solution(String command) {
    	// 최종 결과를 answer 배열을 만들어서 좌표 저장
        int[] answer = new int[2];
        
        // 로봇의 현재 위치 저장, (0, 0) 에서 시작
        int x = 0;
        int y = 0;

        int[] dx = {1, -1, 0, 0};
        int[] dy = {0, 0, -1, 1};

        int dir = 3; // 처음엔 +y 축(북쪽)에 놓여있어야 되니까

        for(char cmd : command.toCharArray()) {
            if(cmd == 'G') {
                x += dx[dir];
                y += dy[dir];
            } 
            else if(cmd == 'B') {
                x -= dx[dir];
                y -= dy[dir];
            } 
            else if(cmd == 'R') {
                if (dir == 3) dir = 0; // 북->동
                else if (dir == 0) dir = 2; // 동->남
                else if (dir == 2) dir = 1; // 남->서
                else if (dir == 2) dir = 3; // 서->북
            }
            else if(cmd == 'L') {
                if (dir == 3) dir = 1; // 북->서
                else if (dir == 1) dir = 2; // 서->남
                else if (dir == 2) dir = 0; // 남->동
                else if (dir == 0) dir = 3; // 동->북
            }
        }

        answer[0] = x;
        answer[1] = y;

        return answer;
    }

나머지 연산 사용

북동남서 시계방향 공식

int[] dx = {0, 1, 0, -1};
int[] dy = {1, 0, -1, 0};

class Solution {
    public int[] solution(String command) {
    	int[] answer = new int[2];
    
        int x = 0;
        int y = 0;

        // 시계방향 순서로 배열 정의: 북(0)->동(1)->남(2)->서(3)
        int[] dx = {0, 1, 0, -1};
        int[] dy = {1, 0, -1, 0};

        // 처음엔 +y 축(북쪽)에 놓여있어야 되니까
        int dir = 0; 

        for (char cmd : command.toCharArray()) {
            
            if (cmd == 'G') {
                x += dx[dir];
                y += dy[dir];
            } 
            else if (cmd == 'B') {
                x -= dx[dir];
                y -= dy[dir];
            } 
            else if (cmd == 'R') {
                dir = (dir + 1) % 4;
            } 
            else if (cmd == 'L') { // 음수 방지 +4
                dir = (dir - 1 + 4) % 4;
            }
        }

        answer[0] = x;
        answer[1] = y;

        return answer;
    }
}

2️⃣ 2. 신입사원 교육

3️⃣ 3. 카페 확장

4️⃣ 4. 보물 지도

profile
개발일지

0개의 댓글