Coding Test

CT | 백준 10799번 쇠막대기

이진유진 2024. 10. 30. 14:47
반응형

https://www.acmicpc.net/problem/10799

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

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        scanner.close();

        int cnt = 0;
        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);

            if (ch == '(') {
                // 여는 괄호일 때는 스택에 추가하여 열려있는 쇠막대기 수를 표시
                stack.push(ch);
            } else {
                // 닫는 괄호가 나왔을 때
                stack.pop();

                if (s.charAt(i - 1) == '(') {
                    // 레이저인 경우 (이전 문자가 '('인 경우)
                    cnt += stack.size();
                } else {
                    // 쇠막대기의 끝인 경우
                    cnt += 1;
                }
            }
        }

        System.out.println(cnt);
    }
}

 

레이저와 쇠막대기 끝을 구분하며 스택 기초 문제를 풀어봤습니다 :) 

 

반응형