https://programmers.co.kr/learn/courses/30/lessons/49994
1. 유형
구현
2. 시뮬레이션
한 점은 방문하는 방향에 따라 여러가지 경우의 수가 나옴. 따라서 3차원 배열을 활용해서 방문체크
'U'일때, 2가지 경우의 길에 대해서 방문체크를 해야한다.
3. 코드
import java.util.*;
class Solution {
static int D[][] = { { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 } };
static int N=10;
static public int solution(String dirs) {
int answer = 0;
char arr[] = dirs.toCharArray();
int currentR = N/2, currentC = N/2;
boolean visited[][][] = new boolean[4][N+1][N+1];
for (char dir : arr) {
int d = getDir(dir);
int nextR = currentR + D[d][0];
int nextC = currentC + D[d][1];
if (!isValid(nextR, nextC)) {
continue;
}
if(visited[d][nextR][nextC]) {
currentR = nextR;
currentC = nextC;
continue;
}
visited[d][nextR][nextC] = true;
visited[(d + 2) % 4][currentR][currentC] = true;
answer++;
currentR = nextR;
currentC = nextC;
}
return answer;
}
static boolean isValid(int nextR, int nextC) {
if (nextR < 0 || nextR >= N+1 || nextC < 0 || nextC >= N+1) {
return false;
}
return true;
}
static int getDir(char dir) {
switch (dir) {
case 'U':
return 0;
case 'R':
return 1;
case 'D':
return 2;
case 'L':
return 3;
default:
return 5;
}
}
}
/*
방문체크를 3차원배열
현재좌표 -> 다음좌표확인시 맵 이탈시 continue
*/
4. 느낀점
String -> char[]로 바꾸기
"title".toCharArray();
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[devmoon] 프로그래머스 - (Java)이진 변환 반복하기 (0) | 2021.06.23 |
---|---|
[devmoon] 프로그래머스 - (java)점프와 순간 이동 (0) | 2021.06.23 |
프로그래머스 - JadenCase 문자열 (0) | 2021.06.22 |
프로그래머스 - 압축 (0) | 2021.06.22 |
프로그래머스 - 이중우선순위큐 (0) | 2021.06.18 |