링크 : https://www.acmicpc.net/problem/1935
1935번: 후위 표기식2
첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이
www.acmicpc.net
- 문제
- 소요시간: 32분 36초



- 설계하기(접근방법)
1. n 을 입력받는다
2. sum 을 입력받는다
3. 알파벳에 해당하는 숫자를 입력받는다.
4. num_list 에 stack을 만들어 후위표기식을 수행한다
1) 만약 알파벳이라면, 해당 알파벳의 아스키 코드를 구하여 'A'의 아스키코드만큼 빼주고 그 숫자를 num_list에서 불러와
stack에 append한다
2) 만약 '+-*/'중에 하나라면 stack에서 2개를 꺼내 계산을 실행한 후 다시 스택에 append 한다
- 코드(출력)
n = int(input())
sum = input()
stack = []
num_list = []
for i in range(n):
num_list.append(int(input()))
for i in range(len(sum)):
if sum[i].isalpha():
code = ord(sum[i]) - ord('A')
stack.append(num_list[code])
if sum[i] in '*+/-':
b = stack.pop()
a = stack.pop()
stack.append(eval(str(a)+sum[i]+str(b)))
print('%.2f' % stack[0])
- 얻어갈 부분
1. 아스키코드를 사용하여 문자를 구분하였다
2. eval() 메서드를 사용하려면 int를 전부 str으로 바꿔준 후 문자열로 합쳐서 사용해야 한다.
3. 소수 둘째자리까지 출력하려면 '%.2f'% 를 사용할 수 있다.
'알고리즘(백준) > 자료구조' 카테고리의 다른 글
| [알고리즘/자료구조] 2346 번 : 풍선 터뜨리기 - python (0) | 2023.03.08 |
|---|---|
| [알고리즘/자료구조] 1966 번 : 프린터 큐 - python (0) | 2023.03.07 |
| [알고리즘/자료구조] 10866번 : 덱 - python (0) | 2023.03.05 |
| [알고리즘/자료구조] 2164번 : 카드2 - python (0) | 2023.03.05 |
| [알고리즘/자료구조] 1158번 : 요세푸스 문제 - python (0) | 2023.03.04 |