

DP가 하위 문제에 대한 최적의 솔루션을 찾은 다음, 이를 이용한 전역 최적 솔루션을 찾는 것이라면 , 그리디는 각 단계마다 지역 최적해를 찾는 문제로, 문제를 더 작게 줄여나가는 형태다.


def solution(storey):
answer = 0
while storey > 0:
rem = storey % 10
offset = 10 - rem
storey //= 10
if (rem > 5 ) or (rem == 5 and storey %10 >= 5) :
answer += offset
storey += 1
else:
answer += rem
return answer
문제를 어떻게 풀지 감이 오지 않아서, 다른 풀이를 통해 5가 기준점이 된다는 힌트를 얻었다
각 자리수를 하나씩 가져와 5를 기준으로 조건문을 적용하였다
5보다 작은 경우 - 내려가는 가기
5보다 큰 경우 - 올라가기
5인 경우, 다음 자리수도 5이상이면 올라가기
? 그러면 5인 경우 다른 자릿수가 5보다 작은경우?
예를 들어 2352인 경우에는, 모든 자릿수가 else 문으로 저리가 되어서 총 12가 된다
def solution(storey):
answer = 0
x = list(str(storey))
x = [int(floor) for floor in x]
x.reverse()
for i in range(len(x)):
if x[i] < 5:
answer += x[i]
elif x[i] == 5:
answer += 5
if i+1 < len(x) and x[i+1] >= 5:
x[i+1] += 1
else:
answer += 10 - x[i]
if i+1 < len(x):
x[i+1] += 1
else: answer += 1
return answer