Q5 -4 후위식 연산(postfix)

2021. 9. 23. 23:23·코딩 테스트/5. Stack, Queue
728x90
반응형

4. 후위식 연산(postfix)

 

* 설명

후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.

만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12입니다.

 

* 입력

첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다.

식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다.

 

* 출력

연산한 결과를 출력합니다.

 

* 예시 입력 1 

352+*9-

* 예시 출력 1

12

 

 

import java.util.Scanner;
import java.util.Stack;

public class Main {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String in1 = in.nextLine();
		
		Stack<Integer> num = new Stack<Integer>();
		
		for(char x : in1.toCharArray()) {
			if(Character.isDigit(x) == false) {///연산자일 경우
				int tmp1 = num.pop();
				int tmp2 = num.pop();
				int res = 0;
				if(x == '+') res = tmp2+tmp1;
				else if(x == '-') res = tmp2-tmp1;
				else if(x == '*') res = tmp2*tmp1;
				else if(x == '/') res = tmp2/tmp1;
				
				num.push(res);				
			}else {///숫자일 경우
				num.push(Character.getNumericValue(x));
			}
		}
		
		System.out.print(num.pop());
		in.close();
		return;

	}

}

 

 

 

import java.util.*;
class Main {	
	public int solution(String str){
		int answer=0;
		Stack<Integer> stack = new Stack<>();
		for(char x : str.toCharArray()){
			if(Character.isDigit(x)){
				stack.push(x-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){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str=kb.next();
		System.out.println(T.solution(str));
	}
}
728x90
반응형

'코딩 테스트 > 5. Stack, Queue' 카테고리의 다른 글

Q5 - 6 공주 구하기  (0) 2021.09.25
Q5 - 5 쇠막대기  (0) 2021.09.23
Q5 - 3 크레인 인형뽑기(카카오)  (0) 2021.09.23
Q5 - 1 올바른 괄호  (0) 2021.09.23
Q5 - 2 괄호문자제거  (0) 2021.09.23
'코딩 테스트/5. Stack, Queue' 카테고리의 다른 글
  • Q5 - 6 공주 구하기
  • Q5 - 5 쇠막대기
  • Q5 - 3 크레인 인형뽑기(카카오)
  • Q5 - 1 올바른 괄호
길동이이이잉
길동이이이잉
길동이이이잉
코딩 일기
길동이이이잉
코딩 일기일까......?
삽질...... 일기일까?
반응형
250x250
  • 모든 글 (97)
    • 개발일기 (9)
      • Project (9)
      • React (1)
      • DB, SQL (7)
      • Spring (5)
      • AWS (1)
    • 코딩 테스트 (63)
      • 1. String(문자열) (12)
      • 2. Array(1, 2차원 배열) (12)
      • 3. Tow pointers, Sliding wi.. (6)
      • 4. HashMap, HashSet, TreeSe.. (5)
      • 5. Stack, Queue (8)
      • 6. Sorting and Searching (8)
      • 7. Recursive, Tree, Graph (11)
      • 8. DFS, BFS 활용 (0)
      • 9. ... (1)
    • 갔다왔다 워홀! (2)

인기 글

태그

SpringBoot
s3대용량파일업로드
Tactical Design
워킹홀리데이
유럽워홀
AWS
aws업로드
달력프로젝트
전략적 설계
워홀
아일랜드
아일랜드워홀
전술적 설계
s3대용량업로드
유럽
Oracle
spring
reactnative
React
Strategic Design

최근 글

hELLO· Designed By정상우.v4.5.3
길동이이이잉
Q5 -4 후위식 연산(postfix)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.