[백준] 2257 화학식량 - Java
스택을 사용해 층을 나눠 계산했다.
1. H C O 이 입력되면 해당하는 숫자를 계산해 넣어준다.
2. 여는 괄호가 입력되면 0을 push해 층을 하나 늘린다.
3. 닫는 괄호가 입력되면 여는 괄호가 나온 후 ~ 닫는 괄호가 나온 시점까지의 결과를 집계해 계산한다.
4. 숫자가 나오면 바로 전 항목에 곱해준 뒤 넣어준다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
Stack<Integer> st = new Stack<>();
int cnt = 0;
int save = 0;
st.push(0);
for (int i = 0; i < str.length(); i++) {
char cmd = str.charAt(i);
switch (cmd) {
case 'H':
int temp = st.pop();
temp = temp + 1;
st.push(temp);
save = 1;
break;
case 'C':
int temp1 = st.pop();
temp1 = temp1 + 12;
st.push(temp1);
save = 12;
break;
case 'O':
int temp2 = st.pop();
temp2 = temp2 + 16;
st.push(temp2);
save = 16;
break;
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
int temp3 = st.pop();
temp3 = temp3 + save * (cmd - '0' - 1);
st.push(temp3);
break;
case '(':
st.push(0);
break;
case ')':
int temp4 = st.pop();
save = temp4;
int temp5 = st.pop();
st.push(temp4 + temp5);
break;
} // end of switch
} // end of for i
for(int i=0; i<st.size(); i++){
System.out.println(st.pop());
}
}
}
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 17952 과제는 끝나지 않아! - Java (0) | 2022.05.01 |
---|---|
[백준] 9625 BABBA - Java (0) | 2022.05.01 |
[백준] 2304 창고 다각형 - Java (0) | 2022.04.25 |
[백준] 16165 걸그룹 마스터 준석이 - Java (0) | 2022.04.24 |
[백준] 9322 철벽 보안 알고리즘 - Java (0) | 2022.04.24 |
댓글
이 글 공유하기
다른 글
-
[백준] 17952 과제는 끝나지 않아! - Java
[백준] 17952 과제는 끝나지 않아! - Java
2022.05.01 -
[백준] 9625 BABBA - Java
[백준] 9625 BABBA - Java
2022.05.01 -
[백준] 2304 창고 다각형 - Java
[백준] 2304 창고 다각형 - Java
2022.04.25 -
[백준] 16165 걸그룹 마스터 준석이 - Java
[백준] 16165 걸그룹 마스터 준석이 - Java
2022.04.24