반응형
https://www.acmicpc.net/problem/1918
1918번: 후위 표기식
첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의
www.acmicpc.net


내 답안
import sys input = sys.stdin.readline tokens = input().rstrip() result = [] op = [] priority = {'*': 2, '/': 2, '+': 1, '-': 1, '(': 0} for i in tokens: if i.isalpha(): result.append(i) elif i == '(': op.append(i) elif i == ')': while op[-1] != '(': result.append(op.pop()) op.pop() else: # i가 op[-1]의 우선순위와 같거나 보다 작으면 # i의 우선순위가 더 커질때까지 pop while op and priority[i] <= priority[op[-1]]: result.append(op.pop()) op.append(i) while len(op) != 0: result.append(op.pop()) print(''.join(result))
학교에선 C++로 후위 표기식을 공부했었다.
파이썬으로 코드를 짜보니 좀 더 깔끔한 느낌이 들었다.
연산자 우선순위는 딕셔너리를 통해 코드를 짰다.
priority = {'*': 2, '/': 2, '+': 1, '-': 1, '(': 0}
반응형
'BOJ > Python' 카테고리의 다른 글
백준 1935번 후위 표기식 2 파이썬 (0) | 2022.03.14 |
---|---|
백준 11866번 요세푸스 문제 0 파이썬 (0) | 2022.03.13 |
백준 2748번 피보나치 수 2 파이썬 (0) | 2022.03.11 |
백준 1977번 완전제곱수 파이썬 (0) | 2022.03.10 |
백준 2804번 크로스워드 만들기 파이썬 (0) | 2022.03.09 |