반응형
https://www.acmicpc.net/problem/10799
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
scanner.close();
int cnt = 0;
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (ch == '(') {
// 여는 괄호일 때는 스택에 추가하여 열려있는 쇠막대기 수를 표시
stack.push(ch);
} else {
// 닫는 괄호가 나왔을 때
stack.pop();
if (s.charAt(i - 1) == '(') {
// 레이저인 경우 (이전 문자가 '('인 경우)
cnt += stack.size();
} else {
// 쇠막대기의 끝인 경우
cnt += 1;
}
}
}
System.out.println(cnt);
}
}
레이저와 쇠막대기 끝을 구분하며 스택 기초 문제를 풀어봤습니다 :)
반응형
'Coding Test' 카테고리의 다른 글
CT | 백준 1780번 종이의 개수 (0) | 2024.11.06 |
---|---|
CT | 백준 17478번 재귀함수가 뭔가요? (0) | 2024.11.06 |
CT | 백준 3986번 좋은 단어 (0) | 2024.10.28 |
CT | 백준 3273번 두 수의 합 (0) | 2024.10.28 |
CT | 백준 1475번 방 번호 (0) | 2024.10.21 |