개발의변화
프로그래머스 LV2 삼각 달팽이 본문
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/68645
해설
function solution(n) { //3*n-5
let arr= Array.from({length:n},(_,i)=>Array.from({length:i+1},()=>0)) //삼각형 배열 소환
let count = 0
let startY = 0
let startX = 0
let lastX = n-1
let lastY = 1
while (count<n*(n+1)/2) {
for (let i = startX; i < n; i++) {
if(arr[i][startY]==0) arr[i][startY] = ++count
} //위에서 왼쪽아래로 대각선으로 값을 할당하는 반복문
for (let i = lastY; i < n; i++) {
if(arr[lastX][i]===0) arr[lastX][i] = ++count
}//맨아래에서 왼쪽부터 오른쪽으로 이동하는 반복문
for (let i = lastX-1; i >= startX; i--) {
if(arr[i][arr[i].length-lastY]===0) arr[i][arr[i].length-lastY]=++count
}//오른족아래에서 위로 대가선 방향으로 이동하는 반복문
startX = startX + 2
startY = startY + 1
lastX = lastX - 1
lastY = lastY + 1
}
return arr.reduce((acc,cur)=>[...acc,...cur])
}
뾰족한 수가 없어서 구현으로 풀었다. 일단 해당 삼각형을 다 0으로 할당한 후에 문제처럼 세방향으로 둘레를 돌아다니면서 값을 할당하는 방식으로 짰다.
반응형
'알고리즘' 카테고리의 다른 글
프로그래머스 LV2 연속된 부분의 수열의 합 (0) | 2023.04.18 |
---|---|
프로그래머스 LV2 질문목록 (0) | 2023.04.16 |
프로그래머스 LV2 소수찾기 (0) | 2023.04.13 |
프로그래머스 LV2 큰 수 만들기 (0) | 2023.04.13 |
프로그래머스 LV2 2 x n 타일링 (0) | 2023.04.13 |