js 프로그래머스 마법의 엘리베이터

이명진·2023년 4월 26일
0

코드카타

목록 보기
67/69

문제 요약

마법의 엘리베이터가 있다. 엘리베이터 버튼은 10의 배수 만큼 증가하고 감소한 버튼만 있다. (1,10,100,1000) 등
이때 주인공이 살고 있는 층에서 0층까지 가려고 한다. 최소 버튼을 누른 값을 구하면된다.

문제 풀이

내가 푼 풀이

단순하게 문제를 풀었다. 6이상일때는 +1을 해서 10을 만들어서 4번 버튼을 누르는게 이상적이고 그 이하는 감소 버튼 (-1)을 눌러서 감소하는 추세로 판별해서 문제를 풀었다. 유의할 것은 5일 경우인데 앞의 자리가 비슷하게 5이하일때 는 감소 해주고 이상일때는 증가하게 로직을 풀었다.

function solution(storey) {
    var answer = 0;
    let arr = (storey+'').split('').reverse();
    let isUpper = false;
    arr.forEach((x,i)=>{
      let tar = x*1;
      if(isUpper){
        tar +=1;
        isUpper = false;
      }
      if(tar>=6){
        //증가
        answer+=10-tar
        isUpper = true;
      }else if(tar === 5){
        let front = arr[i+1];
       if(front && front>=5){
           isUpper = true;
        }
         answer+=5;
      }else{
        //감소
        answer+=tar
      }
    })
  
  

  if(isUpper){
    answer+=1
  }
    return answer;
}

다 통과시킬수 있었다. 처음에는

if(front && front>=5){
           isUpper = true;
        }. 조건에서 front가 있을 경우만 isUpper를 true로 바꿔줬는데 8,9,11,12번 문제를 틀렸을 것이다. 

그 이후에는 조건을 확인해서 if(front && front>=6)으로 수정해주었다. 그랬더니 1,3번만 틀렸다. 

조건을 조금더 확인해보고 if(front && front>=5)로 변경해주니 정답을 맞출수 있었다. 

level 2번 치고 단순 생각만으로 로직을 작성하고 맞출수 있는 문제였다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글