문제
https://school.programmers.co.kr/learn/courses/30/lessons/148653
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
접근
10씩 나눈 몫이 0이 될때까지 반복문을 실행한다.
반복문 내에서는
- 1의 자리(10으로 나눈 나머지)가 5보다 큰 경우 & 1의 자리가 5이면서 10의자리가 5인 경우
10에서 1의 자리를 뺀 값을 answer와 storey에 더해준다.
ex)
storey = 955이면
955 -> 960 -> 1000 -> 0 (10)
955 -> 950 -> 1000 -> 0 (11)
55이면
55 -> 60 -> 100 -> 0 (10)
55 -> 50 -> 0 (10)
위의 경우는 동일하지만,
965, 955 등 3자리 수 이상일 경우 10의 자리가 5보다 같은 경우에도 더 큰 숫자를 선택해야한다. - 1의 자리가 0~4인 경우
나머지를 answer에 더해준다. - 위의 과정을 실행하고나면 storey를 10으로 나눠준다.
코드
def solution(storey):
answer = 0
while storey:
div = storey % 10
if (div == 5 and (storey//10) % 10 >= 5) or div > 5:
answer += (10-div)
storey += (10-div)
else:
answer += div
storey //= 10
return answer
'Algorithm > Greedy' 카테고리의 다른 글
[python] HackerRank - Candies (0) | 2023.05.19 |
---|