마법의 엘리베이터가 있다. 엘리베이터 버튼은 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번 치고 단순 생각만으로 로직을 작성하고 맞출수 있는 문제였다.