연습장
63. 정수를 나선형으로 배치하기 본문
문제 자체는 직관적 이해가 되는 문제이다.
하지만 풀려고 하면 어렵다.
바깥 테두리를 하나의 사이클로 보고 반복문을 사용하였다.
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 |