
https://www.acmicpc.net/problem/2408
문제 전문은 링크 참조
문제가공
- 숫자와 연산자(+, -, *, /)가 번갈아서 입력된다.
- 입력된 수식의 결과값을 출력한다(사칙연산 O)
코드작성
- 값을 입력받는다.
- 입력값이 숫자고 A변수가 None이면, A변수에 할당
- 연산자(곱셈,나눗셈)이 들어오면 숫자값을 하나 더 입력받아 연산처리 후 결과를 A에 할당
- 연산자(덧셈,뺄쎔)이 들어오면 A와 입력된 연산자를 arr 배열에 추가하고, A=None 처리
- 정해진 수(N)만큼 숫자 입력이 끝나면 마지막 A값을 arr에 추가.
- arr 배열의 길이가 1이면 그 값이 결과값이고, 아니면 0이 될 때까지 덧셈 뺄셈 연산 처리를 한다.
import sys
arr =[]
answer =0
n = int(sys.stdin.readline().strip())
cnt = 0
A = None
#F = None
while True:
val = sys.stdin.readline().strip()
if val in ('+','-','*','/'):
if(val in ['*','/']):
B = int(sys.stdin.readline().strip())
cnt+=1
A = A*B if val =='*' else A//B
else:
if A !=None:
arr.append(A)
arr.append(val)
A=None
else:
if A ==None: A = int(val)
else : arr.append(val)
cnt+=1
if cnt == n:
arr.append(A)
break
if(len(arr) == 1):print(arr[0])
else:
answer = arr.pop(0)
while len(arr) !=0:
F = arr.pop(0)
B =int(arr.pop(0))
answer = answer + B*(1 if F =='+' else -1)
print(answer)
리뷰
간단하게 처리하려면 입력받는 값들을 하나의 문자열로 수식을 완성하여 eval()함수를 사용하면 되지만, eval()함수는 실무적으로 사용하기에 굉장히 위험한 함수이기 때문에 제외하고 처리했다.
'Python > 백준 (BOJ)' 카테고리의 다른 글
| [BOJ][B2]카드놀이- 2511 (0) | 2025.08.29 |
|---|---|
| [BOJ][B2]연속구간 - 2495 (0) | 2025.08.28 |
| [BOJ][B2]주사위 네개- 2484 (0) | 2025.08.26 |
| [BOJ][B2]도비의 영어 공부 - 2386 (0) | 2025.08.25 |
| [BOJ][B2]시그마 - 2355 (2) | 2025.08.24 |