백준 10799번 쇠막대기-JAVA

sujin·2025년 2월 9일

코딩테스트-백준

목록 보기
7/18

📝문제

📝알고리즘

//괄호들을 입력받고
//스택을 생성하고 잘려진 쇠막대기 총 개수 num을 초기화
//괄호 문자열을 순회하며 다음을 반복함
//'('면 스택에 push하고
//')'이면 일단 스택 최상단을 제거함
//이전 괄호가 '('이면 스택에 남아 있는 괄호들을 모두 num에 더함
//이전 괄호가 '('가 아니면 num++함
//num 출력

📝구현

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args)throws IOException{
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        String brackets=br.readLine();
        Stack<Character> stack= new Stack<>();
        int num=0;
        
        for(int i=0; i<brackets.length();i++){
            if(brackets.charAt(i)=='('){
                stack.push('(');
            }
            else{
                stack.pop();
                if(brackets.charAt(i-1)=='('){
                    num+=stack.size();
                }
                else{
                    num++;
                }
            }
        }
        System.out.print(num);
    }
}

📌기록하고 싶은 내용

괄호 이용하는 문제➡️스택을 이용해서 효율적으로 풀 수 있는지 우선적으로 점검하기!

profile
열공!

0개의 댓글