카테고리
배열
나만의 카테고리
로직 짜기
문제 링크
programmers.co.kr/learn/courses/30/lessons/49994
요점
- 배열 활용
- 길은 양쪽에서 지나가는 경우를 모두 확인해야한다
참고 지식
- String.length() - Java
풀이 (Java)
class Solution {
public boolean[][][][] visitedPoint = new boolean[11][11][11][11];
public int[] moveX = {-1, 1, 0, 0};
public int[] moveY = {0, 0, 1, -1};
public int solution(String dirs) {
int answer = 0;
int x = 5;
int y = 5;
int afterX = 5;
int afterY = 5;
int movingIndex = 0;
for (int i = 0; i < dirs.length(); i++) {
x = afterX;
y = afterY;
switch(dirs.charAt(i)) {
case 'L' :
movingIndex = 0;
break;
case 'R' :
movingIndex = 1;
break;
case 'U' :
movingIndex = 2;
break;
case 'D' :
movingIndex = 3;
break;
}
afterX += moveX[movingIndex];
afterY += moveY[movingIndex];
if (isNotValidPoint(afterX, afterY)) {
afterX -= moveX[movingIndex];
afterY -= moveY[movingIndex];
continue;
}
if (!visitedPoint[x][y][afterX][afterY] && !visitedPoint[afterX][afterY][x][y]) {
visitedPoint[x][y][afterX][afterY] = true;
visitedPoint[afterX][afterY][x][y] = true;
answer++;
}
}
return answer;
}
public boolean isNotValidPoint(int x, int y) {
return (x < 0 || x > 10 || y < 0 || y > 10);
}
}
로직 자체는 문제를 보자마자 어떤 방식으로 풀어나가야 할지 그려지는 문제입니다. 하지만 이동할 때 고민이 되는 부분이 약간 있었습니다. 배열로 {-1, 1, 0, 0} (U, D, R, L) 저장해서 사용하는 방식을 선택했지만 다른 방식도 있을 것 같습니다.
알고리즘 초보가 정리한 글입니다
더 좋은 방법이나 코드에 대한 코멘트 언제나 환영합니다!
반응형
'Algorithm > Algorithm Test' 카테고리의 다른 글
[프로그래머스 SQL] 없어진 기록 찾기 (0) | 2021.02.23 |
---|---|
[프로그래머스] 주식가격 (C++) (0) | 2020.12.26 |
[프로그래머스] 거스름돈 (C++, Java) (0) | 2020.11.26 |
[프로그래머스] 불량 사용자 (Java) (0) | 2020.11.22 |
[프로그래머스] 뉴스 클러스터링 (Java) (0) | 2020.10.05 |