프로그래머스 - 마법의 엘리베이터 (파이썬)
글 작성자: pental
분류 : 그리디
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/148653
풀이
엘리베이터가 버튼을 눌러 층을 이동하는데,
위층으로 1칸, 아래층으로 1칸 이동이 가능하고, +10, +100 등도 가능하다.
목표층에서 0층으로 이동하는 최소 버튼 횟수를 구하는 문제이다.
즉, 각 자릿수를 기준으로 반올림 또는 내림하여 효율적인 방법으로 움직이는 그리디 알고리즘 문제이다.
while storey > 0 :
digit = storey % 10
next_digit = (storey // 10) % 10
현재 숫자를 1의 자리부터 확인하면서, 다음 자릿수가 4 이상인지 여부에 따라 반올림 할지 내릴지 결정한다.
if digit > 5 or (digit == 5 and next_digit >= 5) :
answer += 10 - digit
storey += 10 # 올림 → 다음 자리수에 영향
예룰 들어 7인경우 +3을 눌러서 10으로 올리고, 다음 자리에 반영하고,
5인데 다음 자릿수가 6이면 올리는게 유리하기에 마찬가지로 올림처리를 진행한다.
else :
answer += digit # 그대로 내려가면 됨
내리는 경우에는 그냥 3번 아래로 누르고 끝
코드
def solution(storey):
answer = 0
while storey > 0 :
digit = storey % 10
next_digit = (storey // 10) % 10
if digit > 5 or (digit == 5 and next_digit >= 5) :
answer += 10 - digit
storey += 10
else :
answer += digit
storey //= 10
return answer
'Programming > 프로그래머스' 카테고리의 다른 글
프로그래머스 - [Level 2] 숫자 카드 나누기 (파이썬) (0) | 2025.04.02 |
---|---|
프로그래머스 - 배달 (파이썬) (0) | 2025.03.30 |
프로그래머스 - 택배 상자 꺼내기 (파이썬) (0) | 2025.03.26 |
[프로그래머스] 달리기 경주 (2) | 2025.03.24 |
[프로그래머스/JAVA] 프로그래머스 문제 모음 (0) | 2021.11.02 |
댓글
이 글 공유하기
다른 글
-
프로그래머스 - [Level 2] 숫자 카드 나누기 (파이썬)
프로그래머스 - [Level 2] 숫자 카드 나누기 (파이썬)
2025.04.02 -
프로그래머스 - 배달 (파이썬)
프로그래머스 - 배달 (파이썬)
2025.03.30 -
프로그래머스 - 택배 상자 꺼내기 (파이썬)
프로그래머스 - 택배 상자 꺼내기 (파이썬)
2025.03.26 -
[프로그래머스] 달리기 경주
[프로그래머스] 달리기 경주
2025.03.24