26. 백준 10799번 쇠막대기

접근 아이디어

스택을 사용해서 “(“이 나올 때마다 push!
“)”이 나올때마다 pop하고 나서 스택에 남은 요소 만큼 쇠막대기가 더해지거나 하나만 더해진다.
이전에 “(“ 였으면 스택 요소 갯수만큼, 이전에 “)”였으면 그냥 1만 더해진다.

필요한 개념

삼항 연산자에 대해 알아보자.
조건문 ? true일 경우 : false일 경우

1
int add = prev == ')' ? 1 : stk.size(); 

코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Character> stk = new Stack<>();
char[] arr = br.readLine().toCharArray();
int result = 0;
char prev = ' ';
for(char c : arr){
switch(c){
case '(':
stk.push(c);
break;
case ')':
stk.pop();
int add = prev == ')' ? 1 : stk.size();
result += add;
break;
}
prev = c;
}
System.out.println(result);
}
}
Share