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

llsh·2022년 1월 20일
0

프로그래머스

목록 보기
2/5

문제 설명

반시계 방향으로 달팽이 채우기를 진행한 후 1차원 배열로 리턴해주는 문제이다.
이때 반시계 방향으로 돌때 값은 1부터 시작한다.

문제 풀이

  1. 우선 삼각 달팽이는 n개의 행을 가지고 각행은 꼭대기 부터 1 ~ n 개의 열을 가지기 때문에 해당하는 값을 넣어주기 위해 배열을 선언 해준다.
  2. 삼각 달팽이는 삼각형으로 계속해서 돌기 때문에 그에 해당하는 pos 값을 미리 배열에 선언해준다.
  3. 삼각형으로 돌때 n은 방향을 꺾을때 마다 n-1이된다 이를 이용해 for문과 while문을 통해 각 값을 배열에 넣어준다.
    4.flat메소드를 사용하여 다차원 배열을 1차원 배열로 만들어 리턴 해준다.
function solution(n) {
    let arr = Array(n).fill().map((_,i)=>Array(i+1).fill())
    let pos = [[1,0],[0,1],[-1,-1]]
    let row = -1 
    let col = 0
    let targetValue = 1
    for(let i= 0; i<n; i++ ){
        let start = 0
        let posIndex = i%3
        while(start < n-i){
            row += pos[posIndex][0]
            col += pos[posIndex][1]
            arr[row][col] = targetValue++
            start++
        }
    }
   return arr.flat()
}

단순 구현 문제로 쉬운 문제 였지만 패턴을 찾겠다고 시간을 조금 많이 낭비한 것 같습니다.😂

profile
기록 기록 기록..

0개의 댓글