[문제 비공개]
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++
)이 있었기 때문이었다. 이것 때문에 시간을 좀 잡아먹어서 아쉬운 기억이 있다.