728x90
📌 문제
https://www.acmicpc.net/problem/10799
📌 알고리즘 풀이
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = br.readLine();
Deque<Character> dq = new ArrayDeque<>();
int lengSize = str.length();
int count = 0;
for(int i=0; i<lengSize; i++) {
char c = str.charAt(i);
switch(c) {
// 여는 괄호일 때 dq에 추가
case '(':
dq.offerLast(c);
break;
// 닫는 괄호일 때 dq에 마지막 요소 제거
case ')':
dq.pollLast();
/**
* 닫는 괄호 이전의 문자가 여는 괄호 일 때 레이저를 의미
* 레어저가 나올 때는 dq의 ( 개수만큼 막대기가 생기므로 dq의 개수를 더한다.
*/
if(str.charAt(i-1) == '(') {
count+= dq.size();
break;
}
/**
* 닫는 괄호 이전의 문자가 닫는 괄호일 때 막대기의 끝 의미
* 하나의 막대기가 끝났으므로 막대기의 마지막 번 째 요소인 1개를 더한다.
*/
count++;
break;
}
}
bw.write(String.valueOf(count));
bw.close();
}
}
728x90
'[알고리즘] > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 2164번 : 카드2 (실버4) (0) | 2022.04.29 |
---|---|
[알고리즘] 백준 1966번 : 프린터 큐 (실버3) (0) | 2022.04.29 |
[알고리즘] 백준 1158번 : 요세푸스 문제 (실버4) (0) | 2022.04.28 |
[알고리즘] 백준 2002번 : 추월 (실버1) (0) | 2022.04.23 |
[알고리즘] 백준 6996번 : 애너그램 (브론즈1) (0) | 2022.04.23 |