SW Expert

[SWEA] 1232 사칙연산 Python

꿀떡최고 2021. 5. 4. 10:32
반응형

[ 문제 ]

 

난이도:  D4

문제 번호:  1232

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV141J8KAIcCFAYD&categoryId=AV141J8KAIcCFAYD&categoryType=CODE&problemTitle=1232&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


 

사칙연산으로 구성되어 있는 식은 이진 트리로 표현할 수 있다.

아래는 식 “(9/(6-4))*3”을 이진 트리로 표현한 것이다.

임의의 정점에 연산자가 있으면 해당 연산자의 왼쪽 서브 트리의 결과와

오른쪽 서브 트리의 결과를 사용해서 해당 연산자를 적용한다.

 

사칙연산 “+, -, *, /”와 양의 정수로만 구성된 임의의 이진트리가 주어질 때,

이를 계산한 결과를 출력하는 프로그램을 작성하라.

단, 중간 과정에서의 연산은 실수 연산으로 하되,

최종 결과값이 정수로 떨어지지 않으면 정수부만 출력한다.

위의 예에서는 최종 결과값이 13.5이므로 13을 출력하면 된다.

 


 

[ 코드 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
for tc in range(111):
    N = int(input())
    arr = [0]+[list(input().split()) for _ in range(N)]
    for i in range(len(arr)-10-1):
        if len(arr[i]) == 4:
            if arr[i][1== '-':
                arr[i] = (i, int(arr[int(arr[i][2])][1]) - int(arr[int(arr[i][3])][1]))
            elif arr[i][1== '/':
                arr[i] = (i, int(arr[int(arr[i][2])][1]) / int(arr[int(arr[i][3])][1]))
            elif arr[i][1== '*':
                arr[i] = (i, int(arr[int(arr[i][2])][1]) * int(arr[int(arr[i][3])][1]))
            else:
                arr[i] = (i, int(arr[int(arr[i][2])][1]) + int(arr[int(arr[i][3])][1]))
    print(f'#{tc} {int(arr[1][1])}')
cs
반응형

'SW Expert' 카테고리의 다른 글

[SWEA] 1242 암호코드 스캔 Python  (0) 2021.05.06
[SWEA] 1240 단순 2진 암호코드 Python  (0) 2021.05.05
[SWEA] 1231 중위순회 Python  (0) 2021.05.03
[SWEA] 1208 Flatten Python  (0) 2021.05.02
[SWEA] 1204 최빈수 구하기Python  (0) 2021.05.01