티스토리 뷰
oper = ['+','-','*','/']
def cal(node): #후위순회
global result
if not tree[node][0] in oper: #부모노드가 숫자이면
return tree[node][0]
else: #부모노드가 연산자이면
left = cal(tree[node][1])
right = cal(tree[node][2])
if tree[node][0] == '+':
result = left + right
elif tree[node][0] == '-':
result = left - right
elif tree[node][0] == '*':
result = left * right
elif tree[node][0] == '/':
result = left // right
return result
T = 10
for tc in range(1, T+1):
N = int(input())
# [데이터(수|연산자),왼쪽 자식노드번호, 오른쪽 자식노드번호]
tree = [[[] for _ in range(3)] for _ in range(N + 1)] #인덱스 1번부터 N번까지 사용하기 위함
for i in range(N):
# 1 - 2 3 / 5 65
node_info = input().split()
node_num = int(node_info[0])
node_data = node_info[1]
#트리에 데이터 넣어주기
if node_data not in oper: #숫자면 숫자 넣어주기
tree[node_num][0] = int(node_data)
else: #연산자이면 데이터 넣어주기
tree[node_num][0] = node_data
if len(node_info) == 4:#사칙연산이므로 자식이 둘다 있을 때 넣어준다.
tree[node_num][1] = int(node_info[2])
tree[node_num][2] = int(node_info[3])
# print(tree)
result = 0
cal(1)
print("#{} {}".format(tc, result))
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] 10726. 이진수 표현 (0) | 2021.04.13 |
---|---|
[SWEA] 5185. 이진수 (0) | 2021.04.13 |
[SWEA] 5178. 노드의 합 (0) | 2021.04.09 |
[SWEA] 10580 .전봇대 (0) | 2021.03.23 |
[SWEA] 4299. 태혁이의 사랑은 타이밍 (0) | 2021.03.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SWEA
- django
- vue
- 위클리챌린지2주차
- splide
- SQL
- SSAFY퇴소
- Python
- vue.js
- 싸피
- DOM
- N과M
- 백준
- SSAFY
- 알고리즘
- 트리
- 자바
- 프로그래머스
- AWS
- Java
- Pyhton
- commit되돌리기
- 세션 스토리지
- 배포
- javascript
- 독학
- 파이썬
- 안드로이드스튜디오
- 비동기패턴
- git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함