swea 4874. Forth (νμ νκΈ°λ² κ³μ°νκΈ°)
λ¬Έμ π
ForthλΌλ μ»΄ν¨ν° μΈμ΄λ μ€ν μ°μ°μ κΈ°λ°μΌλ‘ νκ³ μμ΄ νμ νκΈ°λ²μ μ¬μ©νλ€. μλ₯Ό λ€μ΄ 3+4λ λ€μκ³Ό κ°μ΄ νκΈ°νλ€.
3 4 + .
Forthμμλ λμμ λ€μκ³Ό κ°λ€.
μ«μλ μ€νμ λ£λλ€.
μ°μ°μλ₯Ό λ§λλ©΄ μ€νμ μ«μ λ κ°λ₯Ό κΊΌλ΄ λνκ³ κ²°κ³Όλ₯Ό λ€μ μ€νμ λ£λλ€.
‘.’μ μ€νμμ μ«μλ₯Ό κΊΌλ΄ μΆλ ₯νλ€.
Forth μ½λμ μ°μ° κ²°κ³Όλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ λ§λμμ€. λ§μ½ νμμ΄ μλͺ»λμ΄ μ°μ°μ΄ λΆκ°λ₯ν κ²½μ° ‘error’λ₯Ό μΆλ ₯νλ€.
λ€μμ Forth μ°μ°μ μμ΄λ€.
μ½λ | μΆλ ₯ |
4 2 / . | 2 |
4 3 - . | 1 |
[μ
λ ₯]
첫 μ€μ ν
μ€νΈ μΌμ΄μ€ κ°μ Tκ° μ£Όμ΄μ§λ€. 1≤T≤50
λ€μ μ€λΆν° ν
μ€νΈ μΌμ΄μ€μ λ³λ‘ μ μμ μ°μ°μκ° 256μ μ΄λ΄μ μ°μ°μ½λκ° μ£Όμ΄μ§λ€. νΌμ°μ°μμ μ°μ°μλ μ¬λ°±μΌλ‘ ꡬλΆλμ΄ μμΌλ©°, μ½λλ ‘.’λ‘ λλλ€.
λλμ
μ κ²½μ° νμ λλμ΄ λ¨μ΄μ§λ€.
[μΆλ ₯]
#κ³Ό 1λ²λΆν°μΈ ν μ€νΈμΌμ΄μ€ λ²νΈ, λΉμΉΈμ μ΄μ΄ κ³μ°κ²°κ³Όλ₯Ό μ μλ‘ μΆλ ₯νκ±°λ λλ ‘error’λ₯Ό μΆλ ₯νλ€.
λ΄ νπ¦·
# 4874. Forth
# μ
λ ₯λ°κΈ°
T = int(input())
for tc in range(1, T + 1):
# μ¬κΈ°μ λ¬Έμλ‘ λ°μμ λμ€μ μ«μλ‘ λ°λ‘ λ°κΏμ€μΌ ν¨
susik = input().split()
# λ§μ§λ§μ μ μ΄ μμ΄μ 미리 μ§μμ€
susik.pop()
# μ°μ°μ λ΄μμ€ λ¦¬μ€νΈ λ§λ€κΈ°
num = []
# κ²°κ³Όκ° 1λ‘ μ΄κΈ°ν, 0μ΄λ©΄ μλ¬λ‘ μΆλ ₯, 1μ΄λ©΄ 리μ€νΈμ λ§μ§λ§ κ° μΆλ ₯
result = 1
# μμμ λλ λμ
for i in range(len(susik)):
# μμμ΄ νΌμ°μ°μλ©΄
if susik[i] not in ['+','-','*','/']:
# μμμ κ·Έ μ«μλ₯Ό μ μλ‘ λ°κΏμ λ£μ΄μ€λ€
num.append(int(susik[i]))
# μμμ΄ μ°μ°μλ©΄
else:
# μ«μκ° λκ° μ΄μ λ¨μμμ΄μΌ μ°μ°μλ₯Ό μ²λ¦¬ν΄ μ£Όλλ° μλλ©΄
# λ§λ μμμ΄ μλλκΉ νλ ΈμΌλ―λ‘ κ²°κ³Όκ°μ 0μΌλ‘ λ°κΏμ€λ€
if len(num) < 2:
result = 0
break
else: # 리μ€νΈμ κΈΈμ΄κ° 2 μ΄μμ΄λ©΄ λ§λ μμμ΄λ―λ‘ μ§ν
n1 = num.pop() # λκ°μ§ μ«μλ₯Ό λ½λκ±°λ λͺ¨λ κ³Όμ μμ μ§νλλ―λ‘ λ―Έλ¦¬ λ½μμ€
n2 = num.pop()
new = 0
if susik[i] == '*':
new = n2 * n1
num.append(new) # μ°μ° ν λ€μ 리μ€νΈμ λ£μ΄μ€λ€
# num.append(n2*n1) # => μ΄λ°μμΌλ‘ λ°λ‘ μ²λ¦¬νλκ² λ μ’μ λ―
elif susik[i] == '+':
new = n2 + n1
num.append(new)
elif susik[i] == '-':
new = n2 - n1
num.append(new)
elif susik[i] == '/':
new = n2 // n1
####### μ΄λΌ λͺ« μ°μ°μλ‘ μν΄μ£Όλ©΄ λμ€μ .0μ΄ λμ€λ μΌμ΄μ€κ° λ°μνλ€!!####
num.append(new)
# 리μ€νΈμ κΈΈμ΄κ° 1μ΄ μλλ©΄ μ°μ°μμ μ«μκ° λ¨μμκ±°λ
# μλλ©΄ μμ μμ΄μ§λ νλ¦° μμμ΄λ€
if len(num) != 1:
result = 0
if result:
print(f'#{tc} {num[-1]}')
else:
print(f'#{tc} error')
#####
μ΄ λ¬Έμ νλ©΄μ 2κ°μ§λ₯Ό μλͺ»νλλ°....
- μ«μλ₯Ό μ μλ‘ μ λ°μμΌλ©΄μ λμ€μ intλ‘ κ°μ λ£μ§ μμ κ²..
- λλκΈ° μ°μ°μλ₯Ό μ¬μ©νλ©΄ λ± μ μλ‘ λλ λ¨μ΄μ§λ κ²μ΄ μλ κ²½μ°λ λ°μνλ―λ‘ // λͺ« μ°μ°μλ₯Ό μ¬μ©ν΄μ£Όμ΄μΌ νλ€..
μ°Έκ³ ν¨λ©΄ μ’μ κ°λ λ€ βοΈ
μ€μ νκΈ°λ²(infix notation)
: μ°μ°μλ₯Ό νΌμ°μ°μμ κ°μ΄λ° νκΈ°νλ λ°©λ²
ex) A + B (μ°λ¦¬κ° νμμ μ¬μ©νλ λ°©λ²)
νμ νκΈ°λ²(postfix notation)
: μ°μ°μλ₯Ό νΌμ°μ°μ λ€μ νκΈ°νλ λ°©λ²
ex) AB + (μ»΄ν¨ν°κ° μ¬μ©νλ λ°©λ²)
νμ νκΈ°λ²μ μμμ μ€νμ μ΄μ©ν΄μ κ³μ°νκΈ°
- νΌμ°μ°μλ₯Ό λ§λλ©΄ μ€ν push
- μ°μ°μλ₯Ό λ§λλ©΄ νμν λ§νΌμ νΌμ°μ°μλ₯Ό μ€νμμ pop νμ¬ μ°μ°νκ³ , μ°μ°κ²°κ³Όλ₯Ό λ€μ μ€νμ push
- μμμ΄ λλλ©΄, λ§μ§λ§μΌλ‘ μ€νμ popνμ¬ μΆλ ₯!!!