프로그래머스 코딩 테스트 문제/lv1

프로래머스 Lv1 공원 산책 문제

lys4321 2026. 2. 24. 13:10
  • 프로래머스 Lv1 공원 산책 문제
    • 해당 문제의 난이도 상승 원인
      • 장애물의 여부
    • 해당 문제를 해결한 방법
      • 주어진 이동값 만큼 먼저 계산 후에 실패 시, 변경이 이뤄지지 않도록 작업
    • 처음 방식에서 변경한 방식
      • 처음
        • 이동 거리만큼 한 번에 좌표 계산하여 처리하려 하였으나 오류가 발생
      • 변경
        • 검사용 임시 좌표를 사용하여 테스트 후 성공 시에만 이동하도록 수정
    • 문제의 핵심
      • 미리 경로에 대한 테스트 실행하기
    • 이 문제의 목적
      • 검증 작업에 대한 중요성 상기
import java.util.Arrays;

class WalkPark {
    public int[] solution(String[] park, String[] routes) {
        int pxl = park[0].length();
        int pyl = park.length;
        int[] curLoc = null;
        int rl = routes.length;

        for(int i = 0; i < pyl; i++){
            if(park[i].contains("S")){
                curLoc = new int[]{park[i].indexOf('S') % pxl, i};
                break;
            }
        }

        for(int i = 0; i < rl; i++){
            char d = routes[i].charAt(0);
            int m = Integer.parseInt(routes[i].substring(2));

            int xWeight = (d == 'E') ? 1 : (d == 'W') ? -1 : 0;
            int yWeight = (d == 'S') ? 1 : (d == 'N') ? -1 : 0;

            int tCurX = curLoc[0];
            int tCurY = curLoc[1];
            boolean check = false;

            for(int j = 1; j <= m; j++){
                int tx = curLoc[0] + xWeight * j;
                int ty = curLoc[1] + yWeight * j;

                if(
                        tx < 0
                                ||ty < 0
                                ||tx >= pxl
                                ||ty >= pyl
                                ||park[ty].charAt(tx) == 'X'
                ){
                    check = true;
                    break;
                }

                tCurX = tx;
                tCurY = ty;
            }
            if(!check){
                curLoc[0] = tCurX;
                curLoc[1] = tCurY;
            }
        }

        int[] answer = {curLoc[1], curLoc[0]};
        return answer;
    }

    public static void main(String[] args) {
        String[] park = {"SOO", "OOO", "OOO"};
        String[] routes = {"E 2", "S 2", "W 1"};

        WalkPark wp = new WalkPark();

        System.out.println("결과 : " + Arrays.toString(wp.solution(park, routes)));

    }
}