https://school.programmers.co.kr/learn/courses/30/lessons/148653
코드 & 풀이
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
'프로그래머스 > Lv.2' 카테고리의 다른 글
호텔 대실 - Pyton, 구현, 누적합, 스위핑(Sweeping), 힙(heap) (0) | 2024.12.22 |
---|---|
124 나라의 숫자 - 구현, 수학(?) (1) | 2024.12.20 |
월간 코드 챌린지 시즌1 > 삼각 달팽이 - Python, 구현 (0) | 2024.12.17 |
연속된 부분 수열의 합 - Python, 부분합, 슬라이딩 윈도우 (0) | 2024.12.16 |
2023 KAKAO BLIND RECRUITMENT > 택배 배달과 수거하기 - Pyton, 구현 (1) | 2024.12.09 |