프로그래머스 LEVEL 2(마법의 엘리베이터)
-
사용 언어 : javascript
-
해결 날짜 : 2023-01-05
-
해결 방법 :
- 인자로 받은 storey를 한 글자씩 저장
- storey를 거꾸로 돌면서
- 현재 인덱스의 값이 10인 경우 다음 인덱스로 올림 처리
- 현재 인덱스의 값이 6 이상인 경우
- answer에 10 - storey[i] 추가
- 다음 인덱스로 올림 처리
- 현재 인덱스의 값이 4 이하인 경우 answer에 storey[i] 추가
- 현재 인덱스의 값이 5인 경우
- answer에 storey[i] 추가
- 다음 인덱스 값이 6이상이거나, 현재 인덱스부터 0번 인덱스까지의 값이 전부 5라면 다음 인덱스로 올림 처리
-
회고 :
- x
-
코드
function solution(storey) { let answer = 0; let carry = 0; storey = storey .toString() .split('') .map((e) => parseInt(e, 10)); for (let i = storey.length - 1; i >= 0; i--) { if (storey[i] === 10) { if (i === 0) carry = 1; else storey[i - 1] += 1; } else if (storey[i] >= 6) { answer += 10 - storey[i]; if (i === 0) carry = 1; else storey[i - 1] += 1; } else if (storey[i] <= 4) { answer += storey[i]; } else { answer += storey[i]; let flag = false, temp = i; while (temp >= 0) { if (storey[temp] <= 4) break; else if (storey[temp] >= 6) { flag = true; break; } temp -= 1; } if (temp < 0 && storey[0] === 5) flag = true; if (flag) storey[i - 1] += 1; } } return answer + carry; }
-
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges