1. 문제

2. 풀이
막대기를 작은 것부터 큰것 순서로 잘라가면서 풀어야하는게 조금 어려웠는데 범위 정하는 것만 잘하면 간단하게 풀 수 있다.
3. 코드
import java.util.Scanner;
import java.util.Stack;
public class Q10799 {
/**
* 메모리 22936 KB
* 시간 380 ms
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
Stack<Character> st = new Stack<>();
int cnt = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '(') {
st.push('(');
} else {
if (!st.isEmpty() && str.charAt(i-1) == '(') {
st.pop();
cnt += st.size();
}
else {
st.pop();
cnt++;
}
}
}
System.out.println(cnt);
}
}
4. 결과

5. 소감
처음에 큰 막대기부터 자르는 것으로 시작했는데 문제 조건을 읽어보니 작은 것부터 쪼개야하는 것이었다. 여기서부터 꼬여서 푸는데 어려움이 있었다.
'코딩테스트' 카테고리의 다른 글
| BOJ : 4796 (0) | 2024.05.22 |
|---|---|
| BOJ : 11899 (0) | 2024.04.05 |
| BOJ : 28278 (0) | 2024.04.05 |
| BOJ : 5397 (0) | 2024.04.04 |
| 프로그래머스 : 같은 숫자는 싫어 (0) | 2024.03.19 |