[프로그래머스] 마법의 엘리베이터 (JS)

hhkim·2023년 10월 27일
0

Algorithm - JavaScript

목록 보기
168/188
post-thumbnail

풀이 과정

  1. 작은 자릿수부터 시작해서 숫자를 올림 또는 버림하면서 반복
  2. 현재 자릿수가 5 보다 큰 경우 올림
    현재 단위 버튼 누르는 수는 현재 단위 - 현재 자리의 수
  3. 현재 자릿수가 5보다 작은 경우 버림
    현재 단위 버튼 누르는 수는 현재 자리의 수만큼
  4. 현재 자릿수가 5인 경우에는 다음 자릿수가 5 이상이면 올림, 아니면 버림

코드

function solution(storey) {
  const arr = [0, ...String(storey)].map(Number);
  let result = 0;
  for (let i = arr.length - 1; i >= 0; --i) {
    if (arr[i] > 5) {
      ++arr[i - 1];
      result += 10 - arr[i];
    } else if (arr[i] === 5 && i > 0) {
      if (arr[i - 1] >= 5) {
        ++arr[i - 1];
        result += 10 - arr[i];
      } else {
        result += arr[i];
      }
    } else {
      result += arr[i];
    }
  }
  return result;
}

🤔

난이도 순으로 치면 매번 푸는 문제가 지금까지 가장 어려운 문제가 맡긴 한데 진짜 어려웠다.
이래저래 노가다 하다가 사람들 힌트를 보고 올림, 버림 개념으로 푸는데도 못 통과하는 테스트 케이스 수두룩...
탐색하는 인덱스가 0일 때 예외가 생길 수 있기 때문에 그걸 신경써주어야 했다.

0개의 댓글