문제풀이/백준(Boj) 문제풀이

쇠막대기

얄루몬 2023. 11. 30. 11:07

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

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

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

public class Main {

	private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	private static StringBuilder sb = new StringBuilder();
	private static StringTokenizer st;

	public static void main(String[] args) throws IOException {

		System.out.println(getResult());

	}

	private static int getResult() throws IOException {

		st = new StringTokenizer(br.readLine());

		String nextToken = st.nextToken();
		nextToken = nextToken.trim();

		Stack<String> stack = new Stack<>();

		int result = 0;

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

			if (nextToken.charAt(i) == '(') {

				stack.add(String.valueOf(nextToken.charAt(i)));

			}

			else {
				
				stack.pop();
				if (nextToken.charAt(i-1) == '(') {
					result += stack.size();

				} else {

					result++;
				}
			}

		}

		return result;
	}

}

 

- 레이저를 만나서 막대가 짤리는 부분은 해당 스택 안에 있는 ( 개수를 다 더해주는 작업을 진행해야 하고

- )를 만나고 바로 직전의 괄호가 또 닫는 괄호일 때는 +1 작업을 해주어야 한다.