신뇽이 되어보자

[프로그래머스] 공원 산책 본문

CodingTest

[프로그래머스] 공원 산책

신뇽이되고싶은미뇽 2025. 3. 7. 14:16
728x90

 

내 코드

class Solution {
    public int[] solution(String[] park, String[] routes) {
        int[] answer = {};

        int len = park[0].length(); // 가로 길이
        int hlen = park.length; // 세로 길이


        char[][] temp = new char[hlen][len];
        int startn1 = 0;
        int startn2 = 0;

        //시작점을 찾기

        for (int i = 0; i < hlen; i++) {
            for (int j = 0; j < len; j++) {
                temp[i][j] = park[i].charAt(j);

                if (park[i].charAt(j) == 'S') {
                    //시작점 찾음
                    startn1 = i;
                    startn2 = j;
                }
            }
        }
        int newn1 = startn1;
        int newn2 = startn2; // 이동 시뮬레이션
        boolean isValid = true; // 이동 가능 여부
        
        for (int k = 0; k < routes.length; k++) {

            String[] parts = routes[k].split(" ");
            if (parts.length < 2) continue; // 잘못된 입력 방지

            char op = parts[0].charAt(0); // 방향
            int nt = Integer.parseInt(parts[1]); // 이동 거리
            int tempn1 = newn1, tempn2 = newn2;
            
            isValid = true;
            for (int o = 0; o < nt; o++) {
                if (op == 'E') {
                    tempn2 += 1;
                } else if (op == 'S') {
                    tempn1 += 1;
                } else if (op == 'W') {
                    tempn2 -= 1;
                } else if (op == 'N') {
                    tempn1 -= 1;
                }

            if (tempn1 < 0 || tempn1 >= hlen || tempn2 < 0 || tempn2 >= len || temp[tempn1][tempn2] == 'X') {
                isValid = false;
                break;
            }
        }
        if (isValid) {
            
              newn1 = tempn1;
             newn2 = tempn2;
        }

        }
       return new int[]{newn1, newn2};
    }
}

 

1차원 배열을 2차원으로 만들고 시작점 좌표를 찾아서 이동시켜주는 방식으로 구현했다.

 

어려운 문제는 아니었지만 IDE없이 풀려니 좀 힘들었던 문제...

 

https://school.programmers.co.kr/learn/courses/30/lessons/172928

 

728x90