ffinn92 / Keep-at-solve-it

꾸준히 알고리즘 풀기 위한 스터디 저장소입니다.
2 stars 3 forks source link

[220718][BC][인프런](5-5) 쇠막대기 #100

Closed honeySleepr closed 2 years ago

honeySleepr commented 2 years ago

📌 문제

⭐️ 아이디어

🤔 고민한 내용

💪 새롭게 배운 내용

🆘 이해가 어려운 내용

❌ 해결하지 못한 이유

✅ 본인 풀이

image

// 쇠막대기
// ')' 앞이 '('가 아니면 한 막대기의 오른쪽 끝 지점이다!
public class P0505 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char[] arr = br.readLine().toCharArray();

        Deque<Character> stack = new ArrayDeque<>();
        int answer = 0;

        for (int i = 0; i < arr.length; i++) {

            if (arr[i] == '(') {
                stack.push(arr[i]);
                continue;
            }

            if (arr[i] == ')') {
                /* 레이저든 막대기든 하나 끝난거니까 '(' 하나를 지워야한다 */
                stack.pop();

                if (arr[i - 1] == '(') {
                    answer += stack.size();
                }
                if (arr[i - 1] == ')') {
                    answer++;
                }
            }
        }
        System.out.println(answer);
    }
}

/*
()(((()())(())()))(())
*/

참고한 자료