[백준] 2257 화학식량

알파·2022년 6월 12일
0

Algorithm

목록 보기
9/20

스택을 활용한 문제이다.
괄호 안에 들어간 원자들을 스택으로 쌓아주고 괄호를 닫을 때 tmp에 그 값을 저장해준다.
숫자가 나왔을 때 tmp * (N - 1)을 해주는 것이 핵심인 것 같다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int[] stack = new int[100];
        int tmp = 0;
        int size = 0;
        for(int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if(c == 'H') {
                tmp = 1;
                stack[size] += 1;
            } else if (c == 'C') {
                tmp = 12;
                stack[size] += 12;
            } else if (c == 'O') {
                tmp = 16;
                stack[size] += 16;
            } else if (c == '(') {
                size++;
                stack[size] = 0;
            } else if (c == ')') {
                tmp = stack[size];
                stack[size] = 0;
                size--;
                stack[size] += tmp;
            } else if(c > '1' && c <= '9') {
                stack[size] += tmp * (c - '1');
            }
        }
        System.out.println(stack[0]);
    }
}
profile
I am what I repeatedly do

0개의 댓글