Java/알고리즘
[Java] 프로그래머스 Lv2 - 방문 길이
WaterPunch
2024. 10. 30. 21:50
class Solution {
public int solution(String dirs) {
// 3차원 배열 생성, [X포인트][Y포인트][방향]
// U 일때
// [현재 X포인트][현재 Y포인트][UP] = true 처리
// [현재 X포인트][현재 Y포인트+1][DOWN] = true 도 해주어야 한다
boolean[][][] con = new boolean[11][11][4];
int currentX = 5;
int currentY = 5;
int answer = 0;
int up = 0, down = 1, left = 2, right = 3;
for(int i=0; i<dirs.length(); i++) {
char c = dirs.charAt(i);
if(c == 'U') {
if(currentY < 10) {
if(!con[currentX][currentY][up]) {
con[currentX][currentY][up] = true;
con[currentX][currentY+1][down] = true;
answer++;
}
currentY++;
}
} else if(c == 'D') {
if(currentY > 0) {
if(!con[currentX][currentY][down]) {
con[currentX][currentY][down] = true;
con[currentX][currentY-1][up] = true;
answer++;
}
currentY--;
}
} else if(c == 'L') {
if(currentX > 0) {
if(!con[currentX][currentY][left]) {
con[currentX][currentY][left] = true;
con[currentX-1][currentY][right] = true;
answer++;
}
currentX--;
}
} else if(c == 'R') {
if(currentX < 10) {
if(!con[currentX][currentY][right]) {
con[currentX][currentY][right] = true;
con[currentX+1][currentY][left] = true;
answer++;
}
currentX++;
}
}
}
return answer;
}
}
하드코딩 만세!
반응형