본문 바로가기
알고리즘/스택

항해99 28일차 TIL( 쇠막대기 / 자바)

by 순원이 2024. 4. 26.

문제         

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

 

1 번째 시도   

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

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s = br.readLine();
		
		int answer = 0;
		Stack<Integer> st = new Stack<Integer>();
		
		for(int i=0; i<s.length(); i++) {
			char temp = s.charAt(i);
			//스택에 '(' 일때 추가하고, ')'일때 pop
			if(temp=='(') {
				st.add(i);
			}else {
				st.pop();
				if(s.charAt(i-1)=='(') { //만약 레이저라면
					answer += st.size(); //남은 스택사이즈(잘릴 쇠막대기 갯수) 더함.
				} else { //레이저가 아닐땐 잘린 쇠막대기 끝에 남은거 하나를 더함.
					answer++; 
				}
			}
		}
		
		System.out.println(answer);
	}
}