Algorithm/baekjoon

쇠막대기

마닐라 2022. 1. 27. 21:15

📍 문제 설명

 

💡 접근

강의에서 배웠던 문제와 동일한 문제

닫는 괄호가 레이저인지 막대기의 끝을 알리는지만 판단해주면 된다.

 

👩‍💻 코드

import java.util.*;

public class Main {
    static int n, m, k, cnt, max, min, sum, count, r, c, answer;
    static char[][] board, clone, dis;
    static boolean[][] visited;
    static int[] ch, pm, combi, graph, temp;
    static boolean flag = false;
    static int[] dx = {-1, 0, 1, 0,}; //북동남서
    static int[] dy = {0, 1, 0, -1};
    static ArrayList<Integer> list = new ArrayList<>();

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);

        String s = kb.nextLine();
        System.out.println(T.solution(s));
    }

    private int solution(String s) {
        Stack<Character> stack = new Stack<>();
        stack.push(s.charAt(0));
        for(int i = 1; i < s.length(); i++) {
            if(s.charAt(i) == '(') stack.push('(');
            else {
                stack.pop();
                //닫는 괄호인데 앞에가 여는 괄호면 레이저
                if(s.charAt(i-1) == '(') answer += stack.size();
                //아니면 막대기
                else answer += 1;
            }
        }
        //막대기인데 레이저로 인식되는 부분이 있음
        return answer;
    }
}

'Algorithm > baekjoon' 카테고리의 다른 글

문자열 폭발  (0) 2022.01.28
크게 만들기  (0) 2022.01.28
괄호  (0) 2022.01.27
봄버맨  (0) 2022.01.27
미세먼지 안녕  (0) 2022.01.27