2021 하반기 진짜마지막 데브매칭 코딩 테스트 1번

설명

[문제 비공개]

풀이

class Solution {
    public int solution(String[] drum) {
        int size = drum.length;
        char[][] board = new char[size][size];
        for(int i=0;i<drum.length;i++) {
            board[i] = drum[i].toCharArray();
        }

        int arrived = 0;

        for(int position = 0 ; position < size; position++) {
            boolean stuckedOnce = false;
            int width = position;
            int height = 0;
            while(height < size) {
                if('#' == board[height][width]) {
                    height++;
                }
                else if('>' == board[height][width]) {
                    width++;
                }
                else if('<' == board[height][width]) {
                    width--;
                }
                else if('*' == board[height][width]) {
                    if(stuckedOnce) break;
                    stuckedOnce = true;
                    height++;
                }
            }

            if(height >= size) {
                arrived++;
            }
        }

        return arrived;
    }
}

보드의 크기도 작고 요구사항도 어렵지 않아서 금방 풀 수 있는 문제였다. 중간에 계속 무한 루프가 나와서 왜 그런가 했는데 "*"을 만났을 때 처리해야 하는 로직에서 놓친 부분(height++)이 있었기 때문이었다. 이것 때문에 시간을 좀 잡아먹어서 아쉬운 기억이 있다.

좋은 웹페이지 즐겨찾기