[프로그래머스] 삼각 달팽이 (JAVA)
문제 설명
정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 1,000 이하입니다.
Code
import java.util.*;
class Solution {
public int[] solution(int n) {
int dir = 0;
int i=0 , j=0;
int max = (1+n)*n/2;
int[][] arr = new int[n][n];
boolean[][] visit= new boolean[n][n];
for(int num=1 ; num<=max ; num++) {
arr[i][j] = num;
visit[i][j] = true;
if(dir%3==0) {
if((i+1)>=n || visit[i+1][j]){
dir++;
j++;
} else {
i++;
}
} else if(dir%3==1) {
if((j+1)>=n || visit[i][j+1]){
dir++;
j--;
i--;
} else {
j++;
}
} else {
if(visit[i-1][j-1]){
dir++;
i++;
} else {
i--;
j--;
}
}
}
int idx = 0;
int[] ret = new int[max];
for(int ii=0 ; ii<n ; ii++) {
for(int jj=0 ; jj<n ; jj++) {
if(arr[ii][jj]==0) break;
ret[idx++] = arr[ii][jj];
}
}
return ret;
}
}
Comment
visit을 만들어서 방문했으면 방향을 바꾸는 방법으로 풀었다
Author And Source
이 문제에 관하여([프로그래머스] 삼각 달팽이 (JAVA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ujone/프로그래머스-삼각-달팽이-JAVA저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)