알고리즘 문제 풀이: 파이썬/BOJ

[BOJ_1935] 후위 표기식 2

hueco 2022. 11. 3.

 

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

 

1935번: 후위 표기식2

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

www.acmicpc.net

 

내 풀이(Success) :

 

🧐 Review:

 난이도는 높지 않은 문제라서 단순히 문제를 푸는 것은 어렵지 않지만, 코드의 중복을 줄이고, 효율적으로 짜기 위해 고민을 해볼 수 있는 좋은 문제라고 생각한다. 그 이유는 다음과 같다.

 

1. 알파벳에 매칭 되는 수를 어떻게 저장할까?

2. 문자열로 주어진 연산자를 어떻게 이용해야 될까?

3. 계산 결과를 어떻게 소수점 둘째 자리까지 나타내야 할까?

 

1번을 해결하기 위해 chr() 함수와 딕셔너리를 이용해서 알파벳을 key로 그것에 해당하는 수는 value로 저장했다.

2번을 해결하기 위해 파이썬의 내장 함수인 eval()를 이용했다. 이 함수를 이용하기 위해 1에서 value에 해당하는 값을 문자열로 입력받았다. eval() 함수를 이용하면 if-elif 문을 이용해서 불필요하게 +, -, *, / 에 해당하는 연산식을 모두 작성하는 코드를 한 줄로 줄일 수 있다. 

[eval() 함수의 사용법은 다른 포스팅에 따로 정리를 할 것이다.]

3번을 해결하기 위해서 서식 연산자 %, format() 함수, f-string 등의 여러 방법이 있지만, 내가 가장 좋아하는 f-string을 이용해서 풀었다.

 

🚩 Idea:

 스택을 이용해서 후위 표기식을 계산한다.

 
 

'알고리즘 문제 풀이: 파이썬 > BOJ' 카테고리의 다른 글

[BOJ_16433] 주디와 당근농장  (0) 2022.11.04
[BOJ_10799] 쇠막대기  (0) 2022.11.03
[BOJ_11000] 강의실 배정  (0) 2022.11.03
[BOJ_17609] 회문  (0) 2022.11.03
[BOJ_12904] A와 B  (0) 2022.11.02

댓글