백준 - 10799번 쇠막대기
2024. 3. 15. 16:46ㆍ코딩테스트 정리(자바)
728x90
전에 한번 풀어봤던 문제라 쉽게 풀릴 듯 안풀렸다.
핵심은 ')'가 나오면 -> 레이저 인지 막대의 끝인지 구분해서 다르게 계산해야 한다.
레이저라면 스택의 크기만큼 더하지만
막대의 끝이라면 +1만 더해야 한다.
import java.io.*;
import java.util.*;
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));
Stack <Character> stack=new Stack<>();
String s=br.readLine();
int result=0;
int size=s.length();
for(int i=0;i<size;i++){
char ch=s.charAt(i);
if(ch==')'){
stack.pop();
if(s.charAt(i-1)=='(') //레이저였다면
result+=stack.size();
else //막대의 끝이었다면
result++; //+1만 함
}
else
stack.push(ch);
}
bw.write(Integer.toString(result));
bw.flush();
bw.close();
}
}728x90
'코딩테스트 정리(자바)' 카테고리의 다른 글
| 백준 - 1926번 그림 (실버 1) (BFS) (0) | 2024.03.18 |
|---|---|
| 백준 - 2504번 괄호의 값 (골드 5) (0) | 2024.03.16 |
| 백준 - 5430번 AC (골드 5) (0) | 2024.03.14 |
| 백준 - 1021번 회전하는 큐 (실버 3) (2) | 2024.03.12 |
| 백준 - 큐2 (18258번) 실버 4 (0) | 2024.03.11 |