연습장

63. 정수를 나선형으로 배치하기 본문

프로그래머스/0단계

63. 정수를 나선형으로 배치하기

js0616 2023. 8. 21. 09:36


문제 자체는 직관적 이해가 되는 문제이다.

 

하지만 풀려고 하면 어렵다. 

 

바깥 테두리를 하나의 사이클로 보고 반복문을 사용하였다.

 

 

count = 입력되는 숫자

 

바깥 while 문 1번의 테두리 -> n (끝좌표) 값과 a (시작좌표) 값이 1번 바뀌게 된다.

안쪽 while 문 4개는 각각 왼쪽으로 이동, 아래로이동, 오른쪽으로이동, 위로이동 을 하게된다.

 

function solution(n) {
    var answer = [];
    let count = 1;
    for (let i =0 ; i < n ; i++){
        answer.push([])
    }


    for (let i=0 ; i < n ; i++){
        for(let j=0; j<n ; j++){
            answer[i][j] = 0
        }
    }


    let x = 0;
    let y = 0;
    let a = 0;
    let end = n*n+1

    while(count != end){
        while (y < n){
            answer[x][y] = count
            count++
            y++
        }
        x++
        y--

        while (x < n ){
            answer[x][y] = count
            x++
            count++
        }
        x--
        y--

        while( y > a-1 ){
              answer[x][y] = count
              count++
              y--
        }
        y++
        x--

        while( x > a ){
            answer[x][y] =count
            count++
            x--
        }
        x++
        y++
        n--
        a++
    }  

    return answer;
}

 

 

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

0단계 후기  (0) 2023.08.21
64. 두 수의 합  (0) 2023.08.21
62. 안전지대  (0) 2023.08.20
61. 겹치는 선분의 길이  (0) 2023.08.20
60. 평행  (0) 2023.08.20