반응형
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 |