프로그래머스/Lv.2
마법의 엘리베이터 - Python, 구현
아찌방
2024. 12. 18. 20:23
https://school.programmers.co.kr/learn/courses/30/lessons/148653
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
코드 & 풀이
def solution(storey):
answer = 0
while storey > 0:
remainder = storey % 10
if remainder > 5 or (remainder == 5 and (storey // 10) % 10 >= 5):
answer += (10 - remainder)
storey += 10
else:
answer += remainder
storey //= 10
return answer
뒤에서부터 접근합니다.
그 숫자가 5보다 크거나
혹은
5 이거나, 그 다음의 숫자가 5보다 크면
올림 처리를 하고
아니면 내림 처리를 합니다.
입력 예시: storey = 2554
1. 현재 storey % 10 = 4 (마지막 자리수)
- 4는 5보다 작으므로 내림 처리.
- answer += 4 (4를 더함).
- storey //= 10 → storey = 255.
2. 두 번째 자리수 storey % 10 = 5
- 5는 특별한 경우입니다.
- **다음 자리수(25의 마지막 자리)**가 5 이상이므로 올림 처리.
- answer += 5 (5를 올림으로 추가).
- storey += 10 → 현재 자리수의 올림을 반영합니다.
storey는 255 → 260으로 변합니다.
3. 다음 자리수 storey % 10 = 6 (올림 후)
- 현재 6은 5보다 크므로 다시 올림합니다.
- answer += 4 (10 - 6을 더함).
- storey += 10 → storey = 270.
728x90