📍 문제 설명
💡 접근
강의에서 배웠던 문제와 동일한 문제
닫는 괄호가 레이저인지 막대기의 끝을 알리는지만 판단해주면 된다.
👩💻 코드
import java.util.*;
public class Main {
static int n, m, k, cnt, max, min, sum, count, r, c, answer;
static char[][] board, clone, dis;
static boolean[][] visited;
static int[] ch, pm, combi, graph, temp;
static boolean flag = false;
static int[] dx = {-1, 0, 1, 0,}; //북동남서
static int[] dy = {0, 1, 0, -1};
static ArrayList<Integer> list = new ArrayList<>();
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String s = kb.nextLine();
System.out.println(T.solution(s));
}
private int solution(String s) {
Stack<Character> stack = new Stack<>();
stack.push(s.charAt(0));
for(int i = 1; i < s.length(); i++) {
if(s.charAt(i) == '(') stack.push('(');
else {
stack.pop();
//닫는 괄호인데 앞에가 여는 괄호면 레이저
if(s.charAt(i-1) == '(') answer += stack.size();
//아니면 막대기
else answer += 1;
}
}
//막대기인데 레이저로 인식되는 부분이 있음
return answer;
}
}