All Honey Tip

프로그래머스 – 공원 산책 Java 풀이

프로그래머스 공원 산책 Java 풀이에 대해 알아보겠습니다. 이 문제 역시 BFS 시작 전에 연습용으로 풀기 적절하실 거 같습니다 🙂



프로그래머스 – 공원 산책 Java 경로

코딩테스트 연습 > 연습문제 > 공원 산책

프로그래머스 - 공원 산책 Java 풀이
프로그래머스 - 공원 산책 Java 풀이
프로그래머스 - 공원 산책 Java 풀이

X, Y 좌표가 헷갈리실 수 있지만 그림을 기준으로 생각해보시길 바랍니다.

문제 해결 프로세스는 아래와 같습니다.

1. 시작 위치 찾기.
2. 명령에 따라서 위치 변경
if( 해당 위치로 이동 도중에 범위를 이탈하거나 장애물을 만나면)
{
break, 다음 명령으로
} else
{
원래 위치(x, y)를 해당 위치(mx, my)로 이동
}

class Solution {
    public int[] solution(String[] park, String[] routes) {
        int[] answer = new int[2];
        int x = 0, y = 0; 
        
        // 시작 위치 찾기
        for(int i = 0; i < park.length; i++)
            for(int j = 0; j < park[0].length(); j++)
                if(park[i].charAt(j) == 'S')
                {
                    x = i;
                    y = j;
                }
        
        // 명령 시작
        for(String s : routes)
        {
            String order = s.split(" ")[0];                 // 방향
            int move = Integer.parseInt(s.split(" ")[1]);   // 움직일 거리
            int mx = x;
            int my = y;
            for(int i = 0; i < move; i++) {
                if(order.equals("N"))       // 북
                    mx--;
                else if(order.equals("S"))  // 남
                    mx++;
                else if(order.equals("W"))  // 서
                    my--;
                else                        // 동
                    my++;
                
                // 범위 밖 or 장애물
                if(mx < 0 || my < 0 || mx >= park.length || my >= park[0].length()
                  || park[mx].charAt(my)=='X') {
                    break;
                }
                // 마지막 이동까지 문제 없으면 이동.
                else if (i == move - 1) {
                    x = mx;
                    y = my;
                }
            } 
        }
        answer[0] = x;
        answer[1] = y;
        return answer;
    }
}
image 137

개발자 면접 질문 – Java


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다