complete 1918(후위 표기법)

This commit is contained in:
2020-08-21 16:48:31 +09:00
parent 463ef8b729
commit 67d4252e13
4 changed files with 59 additions and 44 deletions

0
zeta_python/11726.py Normal file
View File

33
zeta_python/1485.py Normal file
View File

@@ -0,0 +1,33 @@
N = int(input())
def check90(p1, p2, p3):
if p2[0] - p1[0] == 0:
if p3[1] - p1[1] == 0:
return True
elif p3[0] - p1[0] == 0:
if p2[1] - p1[1] == 0:
return True
return - (p3[0] - p1[0]) * (p2[1] - p1[1]) == (p3[1] - p1[1]) * (p2[0] - p1[0])
for _ in range(N):
P = [(p1x, p1y), (p2x, p2y), (p3x, p3y), (p4x, p4y)] = \
map(int, input().split()), map(int, input().split()), map(int, input().split()), map(int, input().split())
if check90((p1x, p1y), (p2x, p2y), (p3x, p3y)):
(opox, opoy) = p4x, p4y
(remx, remy) = p3x, p3y
elif check90((p1x, p1y), (p2x, p2y), (p4x, p4y)):
(opox, opoy) = p3x, p3y
(remx, remy) = p2x, p2y
elif check90((p1x, p1y), (p3x, p3y), (p4x, p4y)):
(opox, opoy) = p2x, p2y
(remx, remy) = p4x, p4y
else:
print(0)
continue
if (opox - p1x) ** 2 + (opoy - p1y) ** 2 == 2 * (remx - p1x) ** 2 + 2 * (remy - p1y) ** 2:
print(1)
else:
print(0)

View File

@@ -1,44 +0,0 @@
import re
OUT = []
def turn_exp(start):
t = start
first = None
second = None
op = None
if tokens[t].isalpha():
first = tokens[t]
t += 1
elif tokens[t] == "(":
rr = turn_exp(t+1)
first = rr[1]
t = rr[0]
if tokens[t] == ")":
t += 1
if isinstance(first, str):
OUT.append(first)
if tokens[t] in "+-*/":
op = tokens[t]
t += 1
if tokens[t].isalpha():
second = tokens[t]
t += 1
elif tokens[t] == "(":
rr = turn_exp(t+1)
second = rr[1]
t = rr[0]
if tokens[t] == ")":
t += 1
if isinstance(second, str):
OUT.append(second)
OUT.append(op)
return t, [first, second, op]
tokens = input()
#_, parsed = turn_exp(0)
#for o in OUT:
#print(o, end = '')
# TODO: 중위 표기식의 연산순서 A+B+C 같은거

View File

@@ -0,0 +1,26 @@
I = input()
stack = []
priority = {"*": 3, "/": 3, "+": 2, "-": 2, "(": 1}
for i in I:
if i in "*/+-()":
if len(stack) == 0:
stack.append(i)
continue
if i == ")":
while stack[-1] != "(":
print(stack.pop(), end='')
stack.pop()
elif i == "(":
stack.append(i)
else:
while priority[stack[-1]] >= priority[i]:
print(stack.pop(), end='')
if len(stack) == 0:
break
stack.append(i)
else:
print(i, end='')
else:
for s in stack[::-1]:
print(s, end='')