후위식 연산
👻 문제
🐱🐉 후위 표기법이란?
- 11+, 22+ , 33+
중위 표기식과는 다르게 후위 표기식은 연산자가 뒤에 위치한다. 이렇게 표기하는 방법을 후위 표기법이라고 한다. 연산자가 '뒤(후)'에 위치 하기 때문에 후위 표기법이라고 한다. 이러한 연산은 컴퓨터가 연산을 하기 쉽게 표현하는 방법이다.
🐱🐉 후위 표기법의 예시
4 7 * = 28
4 7 2 + * = 4 * (7+ 2) = 36
4 7 * 20 - = (4* 7) - 20 = 8
3 4 7 * 2 / + = 3 + ((4 * 7 ) / 2 ) = 17
👻 풀이
🐱🐉 후위 표기법의 과정(Stack)
- 입력값을 읽어들인 후, 숫자가 나오면 stack에 push한다.
- 연산자가 나올 경우, 연산자 앞의 2개의 숫자를 계산한다.
- 계산한 결과 값을 stack에 push한다.
- 연산자를 만나면 stack.pop()을 통해 2개를 빼낸 후, 계산한다.
- 위와 같은 방법을 통해 입력값이 없을 때 까지 반복한다.
👻 소스코드
package algolecture;
import java.util.Scanner;
import java.util.Stack;
public class Main39 {
public int solution(String str){
int answer = 0;
Stack<Integer> stack = new Stack<>();
for(char x : str.toCharArray()){
int number = (int) x;
if(number>=48 && number<=57)
stack.push(number - 48);
else{
int rt = stack.pop();
int lt = stack.pop();
if(x == '+')
stack.push(lt+rt);
else if(x=='/')
stack.push(lt/rt);
else if (x == '*')
stack.push(lt*rt);
else if(x == '-')
stack.push(lt-rt);
}
}
answer = stack.get(0);
return answer;
}
public static void main(String[] args) {
Main39 T = new Main39();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
728x90
'Study > 개발일지' 카테고리의 다른 글
[백엔드TIL] Spring Batch에 대한 이해 (1) | 2023.10.06 |
---|---|
[백엔드TIL] 버블정렬과 삽입정렬 (0) | 2023.10.05 |
[백엔드TIL] 쿠버네티스 환경에 대해 알아보기 (0) | 2023.09.27 |
[백엔드TIL]Spring Webflux란 무엇인가? (0) | 2023.09.26 |
[백엔드TIL] MSA 아키텍처란? (0) | 2023.09.25 |