programmers_삼각 달팽이_java
2023. 4. 16. 16:16ㆍAlgorithm/Programmers
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/68645
import java.util.*;
class Solution {
private static int[][] delta = {{1,0}, {0, 1}, {-1, -1}}; // 하 우 좌상
public int[] solution(int n) {
int[] answer = {};
List<Integer> answerList = new ArrayList<>();
int map[][] = new int[n][n];
int y = 0, x = 0;
int idx = 1;
int dir = 0;
boolean endFlag = false;
while(true){
map[y][x] = idx++;
int cnt = 0;
while(true){
int nexty = y + delta[dir%3][0];
int nextx = x + delta[dir%3][1];
// 오른쪽으로 이동할 경우 있음 메모.
if(0<= nexty && nexty <n && 0<= nextx && nextx < n && map[nexty][nextx] == 0){
y = nexty;
x = nextx;
break;
}else{ // 이동 불가 상태
dir++;
cnt++;
}
if(cnt >= 2) {
endFlag = true;
break;
}
}
if(endFlag) break;
}
for(int i = 0; i<n; i++){
for(int j = 0; j<=i; j++){
answerList.add(map[i][j]);
}
}
answer = new int[answerList.size()];
int tmp = 0;
for(int i : answerList){
answer[tmp++] = i;
}
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
programmers_두 큐 합 같게 만들기_java (0) | 2023.04.17 |
---|---|
programmers_메뉴 리뉴얼_java (0) | 2023.04.17 |
programmers_124 나라의 숫자_java (0) | 2023.04.16 |
programmers_롤케이크 자르기_java (0) | 2023.04.16 |
programmers_큰 수 만들기_java (0) | 2023.04.15 |