728x90
문제 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
br.close();
String s = br.readLine().replace("()", "*");
int stick = 0;
Stack<Character> stack = new Stack<>();
for( int i = 0; i < s.length(); i++ ) {
if( s.charAt(i) == '(' )
stack.push('(');
else if( s.charAt(i) == ')' ) {
if( !stack.isEmpty() ) stack.pop();
stick++;
}
else if( s.charAt(i) == '*' )
stick += stack.size();
}
System.out.println( stick );
}
}
* 스택
- 스택에는 '(' 괄호( char 타입 )를 넣는다
- "( )" 가 레이저 --> 괄호 대신 임의의 다른 기호로 변환 ( ex) '*' )
- 문자열을 입력받고 순차적으로 문자를 탐색
'(' 일 경우 : 스택에 '('를 넣음
')' 일 경우 : 스택의 '('를 pop하고 막대기의 개수를 1 더함
'*' 일 경우 : 스택의 괄호 개수( stack.size() )를 막대기의 개수에 더함
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 백준 온라인 저지 ( BOJ )' 카테고리의 다른 글
[백준(Baekjoon)][자바(java)] 2143 : 두 배열의 합 / 이분 탐색 (0) | 2021.02.08 |
---|---|
[백준(Baekjoon)][자바(java)] 10815 : 숫자 카드 / 이분 탐색 (0) | 2021.02.08 |
[백준(Baekjoon)][자바(java)] 10610 : 30 / 그리디 (0) | 2021.02.08 |
[백준(Baekjoon)][자바(java)] 2875 : 대회 or 인턴 / 그리디 (0) | 2021.02.08 |
[백준(Baekjoon)][자바(java)] 2873 : 롤러코스터 / 그리디 (0) | 2021.02.07 |