프로그래머스 - 삼각 달팽이

front_pica·2021년 5월 14일
0

문제

풀이과정

  1. 크게 3단계 과정으로 거친다
    1) 왼쪽 대각선 아래로
    2) 일직선 줄
    3) 오른쪽 대각선 위로
  2. row와 column 변수를 선언하여 단계에 따라 증가 감소 시켜준다.
  3. 만들어진 2차원 배열을 1차원배열로 변환시켜서 리턴 시켜준다.

코드

function solution(n) {
    const results = [];
    let number = 1,
        startRow = 0,
        endRow = n-1,
        startColumn = 0,
        endColumn = n-1,      
        count = 0,
        flag = n;

    //n의 삼각형 2차원 배열 만들기
    for(let i = 1 ; i <= n ; i ++) {
        results.push(Array(i).fill(0));
    }

    while(flag){
        //왼쪽 대각선 아래로
        for (let i = startRow; i <= endRow; i ++){
            results[i][startColumn]  = number;
            number ++;
        }
        startRow ++;
        startColumn ++;

	//일직선 줄
        for (let i = startColumn; i <= endColumn; i ++){
            results[endRow][i] = number;
            number ++;
        }
        endColumn --;
        endRow --;

	//오른쪽 대각선 위로
        for(let i = endRow; i >= startRow; i --){
          results[i][results[i].length-1-count] = number;
          number ++;
        }
        endColumn --;
        startRow ++;
        count ++;
        flag --;
    }
    
    //2차원 배열을 1차원 배열로 변환
    return results.flat();
}
profile
한걸음씩

0개의 댓글