프로그래머스 - 방문 길이

J-Keonho·2020년 9월 22일
0

해당 알고리즘 자료는 제가 직접 푼 것도 있지만 다른 분들의 풀이과의 비교를 통해 더 나은 알고리즘을 공부하기 위해 정리한 것들입니다.

프로그래머스 - 방문 길이

https://programmers.co.kr/learn/courses/30/lessons/49994

풀이 : 삼차배열을 활용하여 각 방향에 대한 방문여부를 체크한다.

class Solution {
    public int solution(String dirs) {
        boolean [][][] visited = new boolean [13][13][5];
	int x = 6, y = 6;
	int answer = 0;
	for (int i = 0; i < visited.length; i++) {
		for (int j = 0; j < visited.length; j++) {
			if(i == 0 || j == 0 || i == visited.length-1 || j == visited.length-1) {
				visited[i][j][1] = true;
				visited[i][j][2] = true;
				visited[i][j][3] = true;
				visited[i][j][4] = true;
			}
		}
	}
	for (int i = 0; i < dirs.length(); i++) {
		char ch = dirs.charAt(i);
		switch (ch) {
		case 'U':
			if(!visited[--y][x][1]) {
				visited[y][x][1] = true;
				visited[y+1][x][2] = true;
				answer++;
			}
			break;
		case 'D':
			if(!visited[++y][x][2]) {
				visited[y][x][2] = true;
				visited[y-1][x][1] = true;
				answer++;
			}
			break;
		case 'L':
			if(!visited[y][--x][3]) {
				visited[y][x][3] = true;
				visited[y][x+1][4] = true;
                		answer++;
			}
			break;
		case 'R':
			if(!visited[y][++x][4]) {
				visited[y][x][4] = true;
				visited[y][x-1][3] = true;
				answer++;
			}
			break;
		}
		if(x == 0) x++;
		if(y == 0) y++;
		if(x == visited.length-1) x--;
		if(y == visited.length-1) y--;
	}
       return answer;
    }
}
profile
안녕하세요.

0개의 댓글