Algorithm
[백준] 10799. 쇠막대기(Java)
거북목을 가진 김기린
2024. 4. 30. 19:52
728x90
반응형
문제
https://www.acmicpc.net/problem/10799
풀이
stack을 활용해서 푸는 문제
'(' 열린괄호가 나올 경우, 스택에 push
')' 닫힌괄호가 나올 경우, 스택에 pop
또한 닫힌괄호에서 레이저라면 ans에 스택의 size만큼 더해준다.(레이저가 아니라면 1만 더해줌)
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));
String s = br.readLine();
Stack<Integer> stack = new Stack<>();
int len = s.length();
int ans = 0;
for (int i = 0; i < len; i++) {
if (s.charAt(i) == '(')
stack.push(1);
else {
stack.pop();
if(s.charAt(i-1) == '(') // 레이저 발사
ans += stack.size();
else
ans ++;
}
}
System.out.print(ans);
}
}
728x90
반응형