본문 바로가기
프로그래머스/Lv.2

마법의 엘리베이터 - Python, 구현

by 아찌방 2024. 12. 18.

 

 

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