[프로그래머스] 삼각 달팽이 (JS)

hhkim·2023년 10월 8일
0

Algorithm - JavaScript

목록 보기
154/188
post-thumbnail

풀이 과정

  1. 각 자리를 0으로 초기화한 2차원 배열 생성
  2. 최댓값만큼 반복: n * (n + 1) / 2
  3. 증가하는 세로 채우기
  4. 3이 끝나면 현재 높이 가로 줄 채우기
  5. 감소하는 세로 채우기

코드

function solution(n) {
  const result = Array(n)
    .fill()
    .map((_, i) => Array(i + 1).fill(0));
  const max = (n * (n + 1)) / 2;
  let [i, j, curr] = [0, 0, 1];
  while (curr <= max) {
    // 증가 세로 채우기
    while (i < n && !result[i][j]) {
      result[i++][j] = curr++;
    }
    --i, ++j;
    // 가로 채우기
    while (j < n && !result[i][j]) {
      result[i][j++] = curr++;
    }
    --i, (j -= 2);
    // 감소 세로 채우기
    while (i > 0 && j > 0 && !result[i][j]) {
      result[i--][j--] = curr++;
    }
    (i += 2), ++j;
  }
  return result.flat();
}

🤔

혼자서 붙잡고 있다가 테스트는 모두 통과했는데 제출하면 반은 통과를 못했다.
1시간 넘게 고민하다가 다른 사람 풀이를 참고해서 풀었다.
규칙을 좀더 단순하게 생각하자!!

0개의 댓글