Record

BAEK10799. 쇠막대기 본문

Algorithm/BOJ

BAEK10799. 쇠막대기

윤프라이즈 2023. 6. 25. 22:25

2023년 6월 25일

https://www.acmicpc.net/problem/10799

시간 : ❤❤❤❤❤

만족도 : ❤❤❤❤❤


SWEA에서 풀었던 문제이다.

스택 자료구조를 활용해서 풀 수 있다.


  • 코드

      import java.util.Scanner;
      import java.util.Stack;
    
      public class BAEK10799 {
          public static void main(String[] args) {
              Stack<String> stack;
              Scanner sc = new Scanner(System.in);
              stack = new Stack<>();
              // 총 개수
              int sum = 0;
              // 쇠막대기 개수
              int stick = 0;
              // 레이저 개수
              int laser = 0;
    
              String str = sc.next();
              // 문자열로 입력 받기
              for (int i = 0; i < str.length(); i++) {
                  if (str.charAt(i) == '(' && str.charAt(i+1) == ')') {
                      stack.push("()");
                      i++;
                  } else stack.push(String.valueOf(str.charAt(i)));
              }
              // 스택의 크기가 0이 아닐 때 계속 반복
              while (!stack.isEmpty()) {
                  // 스택의 top이 ")" 일 때
                  if (stack.peek().equals(")")) {
                      stack.pop();
                      sum++;
                      stick++;
                      // 스택의 top이 "()" 일 때
                  } else if (stack.peek().equals("()")) {
                      stack.pop();
                      if(stick > 0) {
                          laser++;
                          sum += stick;
                      }
                      // 스택의 top이 "(" 일 때
                  } else {
                      stack.pop();
                      stick--;
                      if (stick == 0) {
                          laser = 0;
                      }
                  }
              }
      //        System.out.printf("#%d %d\n", tc, sum);
              System.out.println(sum);
          }
      }

'Algorithm > BOJ' 카테고리의 다른 글

BAEK19237. 어른 상어  (0) 2023.06.27
BAEK3986. 좋은 단어  (0) 2023.06.26
BAEK1406. 에디터  (0) 2023.06.25
BAEK5397. 키로거  (0) 2023.06.24
BAEK16236. 아기 상어  (0) 2023.06.23
Comments