알고리즘, 문제해결/알고리즘 문제풀이
[백준 1935번] 후위 표기식2
카펀
2021. 10. 31. 17:25
난이도: 실버 III
문제 링크: https://www.acmicpc.net/problem/1935
1935번: 후위 표기식2
첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이
www.acmicpc.net
예전에 학교 다닐 때 자료구조 시간에 다룬 적 있는 후위 표기식 관련 문제입니다.
후위 표기식 관련 설명은 여기로: 링크
후위 표기식으로 나타낸 식을 계산할 때는 다음과 같은 과정을 거칩니다.
- 식을 앞에서부터 차례로 확인합니다.
- 피연산자가 나올 경우, stack에 집어넣습니다.
- 연산자가 나올 경우, stack에서 피연산자 두 개를 꺼냅니다. 먼저 넣었던 피연산자가 순서상 더 앞에 위치합니다.
- 피연산자와 연산자를 기준으로 연산을 수행한 후, 그 결과를 다시 stack에 집어넣습니다.
- 식을 전부 확인한 후에 stack에 단 하나의 원소가 남아 있으며, 그것이 연산 결과입니다.
이 문제에서 피연산자는 알파벳 대문자로 주어졌고, 각 대문자마다 대응하는 값이 주어집니다.
저는 이 값을 기록하기 위해 map 자료구조를 활용했습니다 (map<char, double>).
그 외에는 위에서 설명한 순서대로 접근하면 됩니다.
주의할 점으로는, 식의 중간 결과가 -20억보다 크고 20억보다 작다는 범위가 주어져 있으므로, float보다 정밀도가 더 높은 double형 변수를 사용해야 합니다.