티스토리 뷰

문제 링크

BFS로 풀이했습니다.

코드가 올라가 있는 github 주소입니다.

코드가 궁금하시다면 위 github 주소를 눌러주세요!

이번 문제는 프로그래머스 감을 익히고자 IDE이 아닌 프로그래머스 자체에서 풀었는데, 익숙하지 않았습니다.

연습이 더 필요할 것 같아요..

놓치지 말아야 할 것

이번 문제의 핵심은 이동 중 장애물을 만나는지에 대한 확인입니다.

저는 주어지는 값이 크지 않아서 하나씩 움직이면서 비교해주었습니다.

private boolean check(int[] c) {
    return parkBoard[c[1]][c[0]] == 'X';
}

private int[] moving(int[] position, String direct, int move) {
    int[] movedPosition = new int[]{position[0], position[1]};

    if(direct.equals("N")) {
        for(int i =0;i<move;i++) {
            movedPosition[0] -= 1;
            if(movedPosition[0] < 0) {
                return position;
            }

            if(check(movedPosition)) {
                return position;
            }
        }

    } else if(direct.equals("S")) {
        for(int i =0;i<move;i++) {
            movedPosition[0] += 1;
            if(movedPosition[0] >= maxX) {
                return position;
            }

            if(check(movedPosition)) {
                return position;
            }
        }

    } else if(direct.equals("W")) {
        for(int i =0;i<move;i++) {
            movedPosition[1] -= 1;
            if(movedPosition[1] <0) {
                return position;
            }

            if(check(movedPosition)) {
                return position;
            }
        }

    } else {
        for(int i =0;i<move;i++) {
            movedPosition[1] += 1;
            if(movedPosition[1] >= maxX) {
                return position;
            }

            if(check(movedPosition)) {
                return position;
            }
        }
    }

    return movedPosition;
}

마무리

아쉬운 점은 x, y 좌표 정하는 것이 조금 헷갈려서 시간을 많이 소요한 점이었습니다.

실제 시험에서는 이 점 놓치지 않아야겠습니다!!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함