본문 바로가기
Algorithm/BaekJoon[Java]

백준 10799

by 씨니 2022. 3. 24.
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

'Algorithm > BaekJoon[Java]' 카테고리의 다른 글

백준 10866 (Deque)  (0) 2022.03.24
백준 10845 (Queue)  (0) 2022.03.24
백준 9012  (0) 2022.03.24
백준 10828(stack)  (0) 2022.03.24
백준 11004  (0) 2022.03.23