백준 17952 - 과제는 끝나지 않아! (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/17952
풀이
문제 이해
- 교수님이 과제를 주는데, 과제 수행 도중 새로운 과제가 주어질 수도 있다.
- 학생은 현재 수행 중인 과제를 잠시 미뤄두고 새로운 과제를 시작해야 한다.
- 한 번의 작업이 끝나면, 수행 중이던 과제를 이어서 해야 한다.
- 만약 과제가 끝나면 점수를 얻게 된다.
- 모든 과제가 끝난 후 얻은 총 점수를 출력하는 문제이다.
과제 수행 로직
- info[0] == 1 → 새로운 과제 주어짐
- 과제 점수 a, 소요 시간 t를 입력받는다.
- 만약 t == 1이면 즉시 완료되므로 score에 a를 추가한다.
- 그렇지 않다면 (a, t-1)을 스택에 저장한다.
- info[0] == 0 → 현재 진행 중인 과제 수행
- 스택이 비어 있지 않다면, 가장 최근의 (a, t)를 pop()
- t == 1이면 과제 완료 → score += a
- 그렇지 않다면 (a, t-1)을 다시 스택에 저장.
코드
# 백준 17952 - 과제는 끝나지 않아!
# 분류 : 구현, 자료 구조, 스택
import sys
input = sys.stdin.readline
N = int(input())
stack = []
score = 0
for _ in range(N) :
info = list(map(int, input().split()))
if info[0] == 0 :
if len(stack) != 0 :
a, t = stack.pop()
if t == 1 :
score += a
else :
stack.append((a, t - 1))
if info[0] == 1 :
a = info[1]
t = info[2]
if t == 1 :
score += a
else :
stack.append((a, t - 1))
print(score)
'Programming > 백준' 카테고리의 다른 글
백준 2503 - 숫자 야구 (파이썬) (1) | 2025.03.09 |
---|---|
백준 17944 - 퐁당퐁당 1 (파이썬) (0) | 2025.03.08 |
백준 19598 - 최소 회의실 개수 (파이썬) (0) | 2025.03.06 |
백준 1300 - K번째 수 (파이썬) (0) | 2025.03.06 |
백준 1303 - 전쟁 - 전투 (파이썬) (0) | 2025.03.06 |
댓글
이 글 공유하기
다른 글
-
백준 2503 - 숫자 야구 (파이썬)
백준 2503 - 숫자 야구 (파이썬)
2025.03.09 -
백준 17944 - 퐁당퐁당 1 (파이썬)
백준 17944 - 퐁당퐁당 1 (파이썬)
2025.03.08 -
백준 19598 - 최소 회의실 개수 (파이썬)
백준 19598 - 최소 회의실 개수 (파이썬)
2025.03.06 -
백준 1300 - K번째 수 (파이썬)
백준 1300 - K번째 수 (파이썬)
2025.03.06