[swexpert] 1223. 계산기2 (java, D4)
728x90
반응형
입력이 끝날 때까지 정보를 입력받는다
BufferedReader의 경우 input이 null이면 끝난다
+는 무시하고 숫자를 스택에 계속 넣어주고 *은 스택 타입을 int로 설정했기 때문에 -1로 해서 넣어준다.
숫자를 넣기 전 스택 최상의가 -1(*)라면 숫자를 곱해줘야 하므로 현재 숫자와 스택에서 *이전의 숫자
(pop을 두번 해준다) 를 곱해서 다시 스택에 넣어준다.
마지막에 스택에 들어있는 있는 숫자들을 모두 더해주면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Stack;
public class Solution {
static int n;
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String input="";
int tc=0;
while((input=br.readLine())!=null) {
char[] c=br.readLine().toCharArray();
Stack<Integer> stack=new Stack<>();
for (int i = 0; i < c.length; i++) {
if(c[i]=='+') {
continue;
}
if(!stack.isEmpty() && stack.peek()==-1) {
stack.pop();
int num=stack.pop();
stack.push(num*(c[i]-'0'));
}else if(c[i]=='*') {
stack.push(-1);
}else {
stack.push(c[i]-'0');
}
}
int sum=0;
while(!stack.empty()) {
sum+=stack.pop();
}
System.out.printf("#%d %d\n",tc+1,sum);
tc+=1;
}
}
}
728x90
반응형
'swexpert' 카테고리의 다른 글
[swexpert] 5215. 햄버거 다이어트 (java, D3) (0) | 2021.02.08 |
---|---|
[swexpert] 3307. 최장 증가 부분 수열 (java, D3) (0) | 2021.02.05 |
[swexpert] 3499. 퍼펙트 셔플 (JAVA, D3) (0) | 2021.02.05 |
[swexpert] 1861. 정사각형방 (D4 , java, dfs풀기) (0) | 2021.02.05 |
[swexpert] 5432. 쇠막대기 자르기 (JAVA) (0) | 2021.02.04 |
TAGS.