728x90
인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 간략한 문제 설명, 예습 풀이 코드, 강의 수강 후 복습 풀이 코드를 정리하고 있습니다.
- 문제 링크 : https://cote.inflearn.com/contest/10/problem/05-03
- 문제 설명 : 후위연산식이 주어졌을 때, 연산 결과를 출력하는 문제
- 예시 입력 : 352+*9-
- 예시 출력 : 12
예습 풀이
- Stack 자료구조를 사용
- 숫자면 스택에 넣고, 연산자면 스택에서 두 개를 꺼내서 연산하고 연산 결과를 스택에 넣는다
package inflearn.stack_queue;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
//후위식 연산(postfix)
public class Main5_4 {
public static int solutino(String s) {
Stack<Integer> stack = new Stack<>();
int answer = 0;
for (char c : s.toCharArray()) {
if (Character.isDigit(c)) {
stack.push(Character.getNumericValue(c));
} else {
int num1 = stack.pop();
int num2 = stack.pop();
if (c == '+')
stack.push(num2 + num1);
else if (c == '-')
stack.push(num2 - num1);
else if (c == '*')
stack.push(num2 * num1);
else
stack.push(num2 / num1);
}
}
return stack.pop();
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(solutino(br.readLine()));
}
}
복습 풀이
- 예습 풀이와 강의에서의 풀이 방식이 동일하여 복습 풀이 생략
댓글