알고리즘 연습/그리디 알고리즘

[Lv.2 / 프로그래머스 / 파이썬] 마법의 엘리베이터

김세진 2024. 8. 10. 01:12
반응형

 

 

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

풀이

 

그리디하게 접근해야 하는 문제이다. 알고리즘은 다음과 같다.

 

  1. 처음 주어진 수의 1의 자리 숫자부터 순회한다.
    1. 1의 자리 숫자와 다음 자리 숫자를 추출
    2. 1의 자리 숫자가 5보다 크거나, 5이고 다음 자리 숫자가 5 이상이면 올림 처리
    3. 그 외의 경우에는 내림 처리
  2. 결과 반환

 

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

 

 

 

 

 

 

 

반응형