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만 해줌
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 |