백준 10799 / 쇠막대기

dogit·2021년 7월 20일
0

백준문제

목록 보기
14/67

문제

풀이

설명

'('와 ')'가 서로 떨어져서 이루어지고 있으면 막대기가 하나 생성되고
'('와 ')'가 서로 붙어서 이루어지고 있으면 레이저가 생성되어서 막대기를 나눈다.

스택을 이용하여 푸는 문제이다.
레이저인 경우 '('의 개수를 계산하고 쇠 막대기 인 경우 스택에 +1을 해준다.

코드

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Stack;

public class Num10799 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String input = sc.next();
		Stack<Integer> stack = new Stack<Integer>();
		int result = 0;
		
		for(int i = 0; i<input.length(); i++) {
			
			if(input.charAt(i) == '(') {
				stack.push(i);
			} else {
				if(stack.peek() == i-1) {
					stack.pop();
					result += stack.size();
				} else {
					stack.pop();
					result += 1;
				}
			}
		}
		System.out.println(result);
	}
}

참고 : https://binghedev.tistory.com/47
출처 : https://www.acmicpc.net/problem/10799

profile
느리더라도 꾸준하게

0개의 댓글