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

마법의 엘리베이터

by bingual 2024. 3. 4.
반응형

 

https://school.programmers.co.kr/learn/courses/30/lessons/148653

 

프로그래머스

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

programmers.co.kr

문제풀이

 

  • 각 자릿수마다 큐에 저장한다.
  • 맨 오른쪽 자릿수 즉 가장 작은 값을 우선으로 추출해서 비교한다.
  • 추출한 값이 5 미만이라면 그 값을 그대로 answer에 더해주며 값이 5 이상일 경우 각 자릿수를 올림 해주는 게 이득이다.
  • 다만 테스트 케이스가 5, 15 같이 주어진다면 이 경우엔 올림해줘서 계산하는 것보다 내림해줘서 계산하는 게 더 이득이므로 해당 경우의 케이스도 예외처리 해주어야 한다. 
from collections import deque


def solution(storey):
    answer = 0

    que = deque([int(n) for n in str(storey)])
    while que:
        p = que.pop()
        if que and p == 5 and que[-1] < 5 or not que and p == 5:
            answer += p
        elif p >= 5:
            cal = 10 - p
            answer += cal

            while que and que[-1] + 1 == 10:
                que.pop()

            if que:
                que[-1] += 1
            elif not que:
                que.append(1)
        else:
            answer += p

    return answer

'프로그래머스 > lv.2' 카테고리의 다른 글

호텔 대실  (0) 2024.03.07
전력망을 둘로 나누기  (0) 2024.03.06
124 나라의 숫자  (0) 2024.03.03
메뉴 리뉴얼  (0) 2024.03.03
연속된 부분 수열의 합  (3) 2024.03.01