1. 방문 길이
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/49994
알고리즘 설명:
방문 체크를 할 수 있는 자료구조가 핵심
-
배열 인덱스를 좌표로 활용하기 위해 0,0을 5,5(처음 위치)로 생각
-
한 좌표에 연결되어 있는 4개 좌표 사이 길을 지나갔는지 여부를 체크하기 위해 Visit 클래스를 만듦
-
Visit 멤버 변수로 2차원 배열 link를 만들어 좌표 사이 길을 지나갔는지 체크
-
-
Visit 클래스를 2차원 배열로 만들어 현재 좌표를 관리하고 Visit 맴버변수 link를 통해 지나갔는 지 여부를 관리
-
입력된 커맨드를 switch를 사용하여 현재 위치와 지나감 여부를 업데이트
코드(Java):
class Solution {
public int solution(String dirs) {
int[] nowPos = { 5, 5 };
int commandCount = dirs.length();
int answer =0;
Visit[][] isVisit = new Visit[11][11];
for(int i=0;i<11;i++) {
for(int j=0;j<11;j++) {
isVisit[i][j] = new Visit();
}
}
for (int i = 0; i < commandCount; i++) {
switch (dirs.charAt(i)) {
case 'U':
if (nowPos[1] < 10) {
if(!isVisit[nowPos[0]][nowPos[1]].link[nowPos[0]][nowPos[1]+1]) {
answer++;
isVisit[nowPos[0]][nowPos[1]].link[nowPos[0]][nowPos[1]+1]=true;
isVisit[nowPos[0]][nowPos[1]+1].link[nowPos[0]][nowPos[1]]=true;
}
nowPos[1]++;
}
break;
case 'D':
if (nowPos[1] > 0) {
if(!isVisit[nowPos[0]][nowPos[1]].link[nowPos[0]][nowPos[1]-1]) {
answer++;
isVisit[nowPos[0]][nowPos[1]].link[nowPos[0]][nowPos[1]-1]=true;
isVisit[nowPos[0]][nowPos[1]-1].link[nowPos[0]][nowPos[1]]=true;
}
nowPos[1]--;
}
break;
case 'R':
if (nowPos[0] < 10) {
if(!isVisit[nowPos[0]][nowPos[1]].link[nowPos[0]+1][nowPos[1]]) {
answer++;
isVisit[nowPos[0]][nowPos[1]].link[nowPos[0]+1][nowPos[1]]=true;
isVisit[nowPos[0]+1][nowPos[1]].link[nowPos[0]][nowPos[1]]=true;
}
nowPos[0]++;
}
break;
case 'L':
if (nowPos[0] > 0) {
if(!isVisit[nowPos[0]][nowPos[1]].link[nowPos[0]-1][nowPos[1]]) {
answer++;
isVisit[nowPos[0]][nowPos[1]].link[nowPos[0]-1][nowPos[1]]=true;
isVisit[nowPos[0]-1][nowPos[1]].link[nowPos[0]][nowPos[1]]=true;
}
nowPos[0]--;
}
break;
}
}
return answer;
}
public class Visit{
boolean[][] link;
public Visit() {
link = new boolean[11][11];
}
}
}
'알고리즘 > 문제풀이' 카테고리의 다른 글
조이스틱(프로그래머스, Lv2, Java) (0) | 2020.03.01 |
---|---|
입국심사(프로그래머스, Lv 3, Java) (0) | 2020.02.12 |
2019 카카오 블라인드 코딩테스트 (프로그래머스, Java, 길 찾기 게임) (0) | 2019.12.15 |
2019 카카오 블라인드 코딩테스트 (프로그래머스, Java, 무지의 먹방 라이브) (0) | 2019.12.08 |
2019 카카오 블라인드 코딩테스트 (프로그래머스, Java, 실패율) (0) | 2019.12.01 |
댓글