Record
BAEK10799. 쇠막대기 본문
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