728x90
https://www.acmicpc.net/problem/17952
실패한 코드)
import sys
n = int(sys.stdin.readline())
stack, cnt = [], 0
for _ in range(n):
char = list(map(int, sys.stdin.readline().split()))
if char != [0] and char[2]-1 != 0:
stack.append([char[1], char[2]-1])
elif stack and stack[-1][1] - 1 == 0:
cnt += stack[-1][0]
stack.pop()
elif stack and char == [0]:
stack[-1][1] -= 1
if stack[-1][1] == 0:
cnt += stack[-1][0]
stack.pop()
elif char[2]-1 == 0:
cnt += char[1]
print(cnt)
성공하는 코드)
import sys
n = int(sys.stdin.readline())
stack, score = [], 0 #1
for _ in range(n):
homework = list(map(int, sys.stdin.readline().split())) #2
if homework[0] == 1: #3
if homework[2]-1 == 0: #4
score += homework[1]
else: #5
stack.append([homework[1], homework[2]-1])
elif stack: #6
stack[-1][1] -= 1
if stack[-1][1] == 0: #7
score += stack[-1][0]
stack.pop()
print(score)
#1 : stack과 점수를 저장할 변수 생성
#2 : 띄어씌기로 나눠진 숫자를 리스트로 입력받음
#3 : 입력값의 첫 요소가 1인 경우
#4 : 1분짜리 과제인 경우 바로 score에 저장
#5 : 1분짜리 과제가 아닌 경우 점수와 시간을 -1해서 저장
#6 : 입력값의 첫 요소가 0이고 stack이 채워져 있는 경우, stack의 top 첫번째 요소를 -1 해주고 시간이 지나 0이 되면 socre에 점수 채워주고 stack.pop()
엄청 어려운 문제는 아니라고 생각한다. 하지만 고민을 했음에도 내가 작성한 코드로는 예외사항을 처리해주지 못하고 테스트 케이스를 실패했다. 조건에 맞게 구현하는 능력, if-else문을 좀 더 간결하게 작성하는 요령이 필요하다고 느낀다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 15815 파이썬(python) : 천재 수학자 성필 - 후위표기식 (0) | 2022.07.25 |
---|---|
[백준] 2257 파이썬(python) : 화학식량 (0) | 2022.07.25 |
[백준] 11899 파이썬(python) : 괄호 끼워넣기 - 필요한 괄호 개수 세기 (0) | 2022.07.24 |
[백준] 2800 파이썬(python) : 괄호 제거 (0) | 2022.07.24 |
[백준] 16210 파이썬(python) : PPAP (0) | 2022.07.24 |