본문 바로가기

알고리즘/인프런

섹션 5. Stack, Queue(자료구조) 4. 후위식 연산(postfix)

문제

  • 후위연산식이 주어지면 연산한 결과를 출력하는 프로그램을 작성하세요.
  • 만약 3*(5+2)-9 을 후위연산식으로 표현하면 352+*9- 로 표현되며 그 결과는 12입니다.

입력

  • 첫 줄에 후위연산식이 주어집니다. 연산식의 길이는 50을 넘지 않습니다.
  • 식은 1~9의 숫자와 +, -, *, / 연산자로만 이루어진다.

출력

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

입출력 예제


풀이방식

이번 문제는 Stack을 사용하여 푸는 문제이다.


설계과정

1. 입력받은 값이 숫자면 스택에 넣는다.

2. 입력받은 값이 연산자면 스택에서 꺼내고 계산한다.

3. 계산한 값을 스택에 넣는다.

4. 마지막에 스택에 들어간 값을 꺼낸다.


풀이과정

1. 값들을 입력받는 코드를 작성한다.

 

2. int 형으로 메소드를 작성한다.

 

3. str을 문자로 하나씩 쪼개서 x와 매칭한다.

  • toCharArray() : 입력된 문자열을 문자 하나씩 분리해서 문자 배열을 생성함

4. x가 숫자이면 스택에 값을 넣는다.

  • isDiit() : char 값이 숫자 인지를 판단하여 true 또는 false 값으로 리턴한다.

5. x가 연산자이면 스택에서 첫번째와 두번째 값을 꺼내 식에 맞게 계산하고, 계산한 값을 스택에 넣는다.

  • rt : 먼저 빼는 숫자
  • lt : 나중에 빼는 숫자
  • 각 연산자에 맞게 계산한 다음, push()로 그 값을 스택에 넣는다.

6. 스택에 맨 첫번째 값을 가져와 출력한다.

  • get() : 스택의 가장 최근 값을 가져온다.

해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.