반응형
풀이
그리디하게 접근해야 하는 문제이다. 알고리즘은 다음과 같다.
- 처음 주어진 수의 1의 자리 숫자부터 순회한다.
- 1의 자리 숫자와 다음 자리 숫자를 추출
- 1의 자리 숫자가 5보다 크거나, 5이고 다음 자리 숫자가 5 이상이면 올림 처리
- 그 외의 경우에는 내림 처리
- 결과 반환
def solution(storey):
result = 0
while storey > 0:
num = storey % 10 # 1의 자리 수 추출
next_digit = (storey // 10) % 10 # 다음 자리 수 추출
if num > 5 or (num == 5 and next_digit >= 5):
# 5보다 크거나, 5와 같으면서 다음 자리수가 5 이상일 때
result += 10 - num
storey = (storey + 10 - num) // 10
else:
# 5보다 작거나, 5와 같으면서 다음 자리수가 5 미만일 때
result += num
storey //= 10
return result
반응형
'알고리즘 연습 > 그리디 알고리즘' 카테고리의 다른 글
[🥇5 / 백준 12904 / 파이썬] A와 B (2) | 2023.10.30 |
---|---|
[Lv.2 / 프로그래머스 / 파이썬] 광물 캐기 (0) | 2023.04.07 |
[🥈3 / 백준 25709 / 파이썬] 1 빼기 (0) | 2022.11.11 |
[🥈3 / 백준 1448 / 파이썬] 삼각형 만들기 (0) | 2022.06.23 |
[🥈4 / 백준 1343 / 파이썬] 폴리오미노 (0) | 2022.06.01 |