씨니 2022. 3. 24. 16:15
728x90

▶10799번 문제 - 쇠막대기

 

▶풀이방법

import java.util.*;
import java.io.*;
public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String str = br.readLine();
		Stack<Character> stack = new Stack<>();
		
		int result = 0;
		for(int i=0; i < str.length(); i++) {
			char c = str.charAt(i);
			if(c == '(') stack.push(c);
			else {
				stack.pop();
				if(str.charAt(i-1) == '(') result += stack.size();
				else result++;
			}
		}
		
		bw.write(String.valueOf(result));
		bw.flush();
		bw.close();
		br.close();
	}
}

1. 만약 입력된 값이 '('라면 stack에추가 ( stack.push('(') )

2. 입력된 값이 ')'일 경우 stack.pop()해주고

- 이전 값이 '(' 일 경우 stack크기를 결과값에 더해줌.

- 이전값이 ')'일 경우 결과값에 +1만 해줌

 

참고) https://steady-coding.tistory.com/10

728x90