문제

마법의 엘리베이터라는 설정이 붙어있긴 하지만, 각 자릿수를 0으로 만드는 최소 이동횟수를 구하는 문제이다.
풀이
def solution(storey):
num = storey
cnt = 0
while num :
#현재 1의 자리
digit = num % 10
#다음에 들어갈 num
num = num // 10
#num % 10 : 다음 10의 자릿수
#자릿수가 5보다 크면 : 올라가기가 유리(상위 자릿수에 1 더함)
if digit > 5 or (digit == 5 and (num % 10 + 1) > 5):
cnt += (10 - digit)
num += 1
#5보다 작으면 : 내려가기가 유리
else :
cnt += digit
return cnt
풀이 로직
한번 누를 때마다 +1, -1을 결정하게 되므로 각 자릿수마다 두 개의 선택지가 있다.
- 내려가기 : 자릿수만큼 누름
- 올라가기 : 10 - 자릿수만큼 누름 -> 이 경우에는, 대신 윗 자리에 + 1을 해야함
따라서, num % 10으로 현재 수의 1의 자리의 수를 구하고, 반복할때마다 //10을 통해서 자릿수에 따라 어떤 방식이 유리한지 선택하는 작업을 수행하였다.
Github Link ←
BackJoon-Programmers/프로그래머스/2/148653. 마법의 엘리베이터 at main · jaeheonki/BackJoon-Programmers
Contribute to jaeheonki/BackJoon-Programmers development by creating an account on GitHub.
github.com
'Algorithm' 카테고리의 다른 글
| [프로그래머스] 124 나라의 숫자 (0) | 2026.04.16 |
|---|---|
| [프로그래머스] 프렌즈4블록 (1) | 2026.04.13 |
| [프로그래머스] 오픈채팅방 (0) | 2026.04.12 |
| [프로그래머스] 프로세스 (0) | 2026.04.09 |
| [프로그래머스] 피로도 (0) | 2026.04.09 |
