https://school.programmers.co.kr/learn/courses/30/lessons/49994
풀이 - 나의 생각
1 -> 2 로 넘어갈 경우
방문 길이는 체크 되지만
2-> 1 방향으로 가는 경우는
체크 되지 않아야 한다.
기존에 하던 것처럼 2차원 배열로 방문처리 할 경우
위의 경우는 가능하지만
3 ->2나, 4->2, 5->2 같은 경우
방문 길이가 늘어나야 하지만
2가 이미 방문처리 되어 늘어나지 않는다.
그걸 어떻게 코딩할까 고민을 하다가
방문처리를 3차원으로 하면 되겠다고 생각했다.
[방향][맵][맵] 이런 식으로해서
들어온 방향 + 반대 방향을 방문 처리 해주면
그 외에 방향에서 들어오는 건 방문 길이가 추가 되게 할 수 있다!!
코드
import java.util.*;
class Solution {
public int solution(String dirs) {
int answer = 0;
boolean[][][] visited = new boolean[4][11][11];
int x = 5, y = 5;
for(int i = 0; i < dirs.length(); i++){
switch(dirs.charAt(i)){
case 'U':
if(x-1 < 0) continue;
x--;
if(!visited[0][x][y]){
answer++;
visited[0][x][y] = true;
visited[1][x+1][y] = true;
}
break;
case 'D':
if(x+1 >= 11) continue;
x++;
if(!visited[1][x][y]){
answer++;
visited[1][x][y] = true;
visited[0][x-1][y] = true;
}
break;
case 'L':
if(y-1 < 0) continue;
y--;
if(!visited[2][x][y]){
answer++;
visited[2][x][y] = true;
visited[3][x][y+1] = true;
}
break;
case 'R':
if(y+1 >= 11) continue;
y++;
if(!visited[3][x][y]){
answer++;
visited[3][x][y] = true;
visited[2][x][y-1] = true;
}
break;
}
}
return answer;
}
}
728x90
'프로그래머스 > Lv.2' 카테고리의 다른 글
2019 카카오 개발자 겨울 인턴십 > 튜플 - JAVA (1) | 2024.01.10 |
---|---|
코딩테스트 연습 > 주식 가격 - JAVA (0) | 2024.01.10 |
코딩테스트 연습 > 뒤에 있는 큰 수 찾기 - JAVA (0) | 2024.01.09 |
코딩테스트 연습 > 모음사전 - JAVA (0) | 2024.01.07 |
2018 KAKAO BLIND RECRUITMENT > [3차] 압축 - JAVA (1) | 2024.01.06 |