본문 바로가기

프로그래머스/Java

삼각 달팽이

문제


정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.


제한사항

  • n은 1 이상 1,000 이하입니다.

입출력 예

4 [1,2,9,3,10,8,4,5,6,7]
5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9]
6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11]

답안


class Solution {
    public int[] solution(int n) {
          int[] answer = new int[(n*(n+1))/ 2];
	        int result[][] = new int[n][n];
	        
	        int x = -1; int y= 0; 
	        int num=1;
	        
	        for(int index=0; index<n; index++) {
	        	for(int joker=index; joker<n; joker++) {
	        		if(index%3==0) {
	        			x++;
	        		}else if(index%3==1) {
	        			y++;
	        		}else {
	        			x--;
	        			y--;
	        		}
	        		result[x][y] = num++;
	        	}
	        }
	        
	        int count=0;
	        
	        for(int index=0; index<result.length; index++) {
	        	for(int joker=0; joker<result[index].length; joker++) {
	        		int number = result[index][joker];
	        		if(number == 0) break;	 
	        		
	        		answer[count++] = number;
	        	}
	        }
        return answer;
    }
}

'프로그래머스 > Java' 카테고리의 다른 글

이진 변환 반복하기  (0) 2022.04.04
쿼드압축 후 개수 세기  (0) 2022.04.04
n^2 배열 자르기  (0) 2022.04.04
카펫  (0) 2022.03.28
타겟 넘버  (0) 2022.03.28