

처음에 엄청 어렵게 느껴졌는데, 막상 풀때는 생각보다 풀만했다.
각 예제에 있는걸 그림을 그려서 이해했다. 그리고 각 입력값별로 끊어보면서 카운팅을 직접 했다.
선입선출의 큐를 이용해서 풀었다. 레이저에 해당하는 ()는 임의의 다른 문자로 변환하여 (, ), 레이저(풀이 코드상에선 /) 3가지 경우로 나누었고, 각 경우마다 어떤게 나오냐에 따라 조각 수를 계산하여 풀었다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine().replace("()", "/");
Queue<Character> queue = new LinkedList<>();
int count = 0;
int ans = 0;
for (int i=0; i<str.length(); i++) {
char c = str.charAt(i);
if (c=='(') {
queue.offer('(');
} else if (c==')') {
queue.poll();
ans++;
} else if (c=='/') {
ans+=queue.size();
}
}
System.out.println(ans);
}
}'백준 문제풀이' 카테고리의 다른 글
| 17299. 오등큰수 (자바, Java) (0) | 2022.11.20 |
|---|---|
| 17298. 오큰수 (자바, Java) (0) | 2022.11.20 |
| 17413. 단어 뒤집기 2 (자바, Java) (0) | 2022.11.20 |
| 10866. 덱 (자바, Java) (0) | 2022.11.05 |
| 1158. 요세푸스 문제 (자바, Java) (0) | 2022.11.05 |