LV 2: 마법의 엘리베이터

ewillwin·2023년 8월 18일
0

문제 링크

LV 2: 마법의 엘리베이터


구현 방식

  • 처음에 backtracking으로 풀려했으나, recursion limit error를 받아버렸다 (brute force로 푸는 건 아닌걸로)
    -> 규칙을 찾아주어야 한다

  • 이 문제는 storey의 자릿수를 줄여가며 1)6~9라면 올려주고, 2)0~4라면 내려주고, 3)5라면 다음 자릿수를 기준으로 올릴지 내릴지 정해주면 된다
    3)의 경우, 다음 자릿수가 0~4라면 내려주고, 5~9라면 올려준다

  • 3)의 경우에서, 다음 자릿수가 5일때 내려줘야할 지 올려줘야할 지 정해줘야하는데, 아래의 예시를 통해 올려줘야한다는 사실을 알 수 있다

# 올려준다면
555 -> 560 -> 600 -> 1000 -> 0: 14

# 내려준다면
555 -> 550 -> 500 -> 0: 15

코드

def solution(storey):
    
    count = 0
    while storey > 0:
        remainder = storey % 10
        
        if remainder > 5: #올림
            count += 10 - remainder
            storey += 10
            
        elif remainder <= 5: #내림
            count += remainder
            
            if remainder == 5: # remainder가 5라면 다음 자릿수를 기준으로 올릴지 내릴지 정해야함
                next_remainder = (storey//10)%10 #0~4라면 내림 5~9라면 올림
                if next_remainder > 4:
                    storey += 10
        
        storey //= 10 #자릿수를 줄여나감
        
    return count
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글