본문 바로가기
알고리즘 문제풀이/인프런

[알고리즘] 5-5 쇠막대기 - Stack (인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의)

by jeonghaemin 2021. 6. 5.
728x90

인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 예습 풀이 코드, 강의 수강 후 복습 풀이 코드를 정리하고 있습니다.

풀이

  • Stack 자료구조를 사용하여 풀이
package inflearn.stack_queue;

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

//쇠막대기
public class Main5_5 {

    public static int solution(String s) {
        int answer = 0;
        Stack<Character> stack = new Stack<>();

        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '(') {
                stack.push(s.charAt(i));
            } else {
                stack.pop();

                if (s.charAt(i - 1) == '(') { //레이저라면
                    answer += stack.size();
                } else { //한 쇠막대기의 마지막 조각이라면
                    answer++;
                }
            }
        }

        return answer;
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println(solution(br.readLine()));

        br.close();
    }
}

댓글