문제
https://school.programmers.co.kr/learn/courses/30/lessons/148653
문제요약
1, -1, 10, -10, 100, -100 등과 같이 절댓밗이 10^c 형태인 정수들이 적힌 버튼으로 이루어진 엘리베이터가 있습니다. 민수가 있는 층에서 0층으로 가기 위해서 버튼을 최소 몇 번 눌러야 하는지 구하는 문제입니다.
풀이
N층에서 0층으로 가기 위해서는 각 자리의 수들을 0으로 만들어야 합니다. 그리고 각 자리의 수들을 최소로 0을 만들기 위해선 5를 기준으로 정할 수 있습니다. 각 자리의 수를 num 이라고 하면, 5보다 크다면 10 - num, 5보다 작다면 num이 최소입니다. 5보다 크다면 다음 숫자를 계산해줄 때 carry를 더해주어야 합니다.
num이 5일 때의 케이스가 중요합니다. 다음 수에 carry를 더하는 게 최소가 될지 고려해주어야 합니다. 다음 수 + carry > 5가 된다면 carry를 1 더하고 아니라면 더하지 않습니다.
마지막에 carry가 남는다면, 남은 carry를 처리해야 합니다. 9555층일 경우 마지막 10000을 만들기 때문에 1이 남게 되기 때문입니다.
풀이 코드
'Algorithm' 카테고리의 다른 글
[leetcode] Letter Combinations of a Phone Number (0) | 2022.12.27 |
---|---|
[leetcode] 3sum (swift) (0) | 2022.12.24 |
[leetcode] Container With Most Water (swift) (0) | 2022.12.22 |
[leetcode] Reverse Integer (swift) (0) | 2022.12.21 |
[leetcode] Zigzag Conversion (swift) (0) | 2022.12.20 |