T = int(input())
for tc in range(1,T+1):
fx = list(map(str,input().split()))
stack = [0] * len(fx)
top = -1
for i in fx:
if i.isdigit():
top += 1
stack[top] = int(i)
else:
if i == '.':
if top == 0: # 스택에 결과값만 남았을 때
print(f'#{tc} {stack[top]}')
else:
print(f'#{tc} error')
break
elif top < 1:
print(f'#{tc} error')
break
b = stack[top]
top -= 1
a = stack[top]
if i == '+':
stack[top] = a + b
elif i == '-':
stack[top] = a - b
elif i == '*':
stack[top] = a * b
elif i == '/':
stack[top] = a // b
else:
print(f'#{tc} error') # 알 수 없는 연산자
break
실수 한 부분
1. 가장 마지막 트라이 : 틀린부분을 잘 모르겠음... 혹시 아시면 댓글바람...
T = int(input())
for tc in range(1,T+1):
fx = list(map(str,input().split()))
stack = [0] * len(fx)
top = -1
for i in fx:
if i.isdigit():
top += 1
stack[top] = i
else:
if i == '.':
top -= 1
break
b = int(stack[top])
a = int(stack[top-1])
if i == '+':
top -= 1
stack[top] = a + b
elif i == '-':
top -= 1
stack[top] = a - b
elif i == '*':
top -= 1
stack[top] = a * b
elif i == '//': # '/' 로 바꿔야했음
top -= 1
stack[top] = a // b
else:
break
# print(f'#{tc} {top}{stack}')
if top == -1 and stack:
print(f'#{tc} {stack[top+1]}')
else:
print(f'#{tc} error')
1. 가장 처음 트라이 : try-except 사용해서 테스크 케이스 중 5개만 맞춤
T = int(input())
for tc in range(1,T+1):
fx = list(map(str,input().split()))
prior = ['*','//','-','+','.']
stack = []
try:
for i in fx:
if i not in prior:
stack.append(int(i))
elif i =='.':
break
else:
b = stack.pop()
a = stack.pop()
if i == '+':
stack.append(a + b)
if i == '-':
stack.append(a - b)
if i == '*':
stack.append(a * b)
if i == '//':
stack.append(a // b)
print(f'#{tc} {stack.pop()}')
except:
print(f'#{tc} error')
2. 두 번째 트라이 : 수식을 적용할 때 top에 대한 설정 문제
T = int(input())
for tc in range(1,T+1):
fx = list(map(str,input().split()))
prior = ['*','//','-','+','.']
stack = [0] * len(fx)
top = 0
for i in range(len(fx)):
if fx[i] not in prior:
stack[top] = int(fx[i])
top += 1
elif fx[i] =='.':
top -= 1
break
else:
b = stack[top-1]
a = stack[top-2]
top -= 2 # top -=1 한 후 a 값에 수식 값이 들어갔어야 했음
if fx[i] == '+':
stack[top] = a + b
top += 1
if fx[i] == '-':
stack[top] = a - b
top += 1
if fx[i] == '*':
stack[top] = a * b
top += 1
if fx[i] == '//': # '/'로 하는걸 실수
stack[top] = a // b
top += 1
# print(f'#{tc} {top}{stack}')
if top == 0 and stack:
print(f'#{tc} {stack[top]}')
else:
print(f'#{tc} error')
'알고리즘 문제풀이' 카테고리의 다른 글
Swea D3_11883. 배열 최소합 Python 재귀,백트래킹 (0) | 2024.02.14 |
---|---|
Swea D3_11881. 4880. 토너먼트 문제풀이 Python 분할정복 (0) | 2024.02.14 |
Swea D3_11879. 미로 Python (1) | 2024.02.14 |
Swea D4_1224.계산기3 Python (0) | 2024.02.14 |
백준 1032 명령 프롬프트 브론즈1 Python (0) | 2024.02.09 |