Search
Duplicate

마법의 엘리베이터

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

import math d = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 5, 7: 4, 8: 3, 9: 2, 10: 1, } def solve(x): if x < 10: return d[x] s = str(x) if s[0] == '1' and all(i == '0' for i in s[1:]): return 1 denom = 1 while 1 <= x / denom: denom *= 10 denom /= 10 a = int(math.ceil(x / denom)) b = int(math.floor(x / denom)) return min( d[a] + solve(abs(a * denom - x)), d[b] + solve(abs(b * denom - x)) ) def solution(storey): return solve(storey)
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges