본문 바로가기
알고리즘, 문제해결/알고리즘 문제풀이

[백준 1935번] 후위 표기식2

by 카펀 2021. 10. 31.

난이도: 실버 III

문제 링크: https://www.acmicpc.net/problem/1935

 

1935번: 후위 표기식2

첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이

www.acmicpc.net

 

백준 1935번 문제 

 

예전에 학교 다닐 때 자료구조 시간에 다룬 적 있는 후위 표기식 관련 문제입니다.

후위 표기식 관련 설명은 여기로: 링크

 

후위 표기식으로 나타낸 식을 계산할 때는 다음과 같은 과정을 거칩니다.

  1. 식을 앞에서부터 차례로 확인합니다.
  2. 피연산자가 나올 경우, stack에 집어넣습니다.
  3. 연산자가 나올 경우, stack에서 피연산자 두 개를 꺼냅니다. 먼저 넣었던 피연산자가 순서상 더 앞에 위치합니다.
  4. 피연산자와 연산자를 기준으로 연산을 수행한 후, 그 결과를 다시 stack에 집어넣습니다.
  5. 식을 전부 확인한 후에 stack에 단 하나의 원소가 남아 있으며, 그것이 연산 결과입니다.

 

이 문제에서 피연산자는 알파벳 대문자로 주어졌고, 각 대문자마다 대응하는 값이 주어집니다.

저는 이 값을 기록하기 위해 map 자료구조를 활용했습니다 (map<char, double>).

그 외에는 위에서 설명한 순서대로 접근하면 됩니다.

 

주의할 점으로는, 식의 중간 결과가 -20억보다 크고 20억보다 작다는 범위가 주어져 있으므로, float보다 정밀도가 더 높은 double형 변수를 사용해야 합니다.

 

채점 결과

 

 

 

 

댓글