BOJ 10799 쇠막대기
- 문제 링크
https://www.acmicpc.net/problem/10799
- 문제 해설
'('가 입력으로 들어오면 쇠막대기나 레이저가 하나 추가된다는 의미이므로 스택에 '('를 쌓는다.
')'가 입력으로 들어오는 경우가 중요하다.
')'가 입력으로 왔을 경우는 2가지로 나눌 수 있다. 레이저이거나, 쇠막대기의 끝 점이다.
레이저인 경우 스택에 쌓인 쇠막대기의 수만큼 조각이 생긴다.
쇠막대기의 끝 점인 경우 조각이 1개가 추가된다.
cnt는 조각의 수이고, 레이저를 판별하기 위해 입력을 배열에 담았다.
- 코드 보기
import java.io.*; import java.util.Stack; public class Main { static int cnt; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); Stack<Character> s = new Stack<>(); String str = br.readLine(); char[] c = new char[str.length()]; for (int i = 0; i < str.length(); i++) { c[i] = str.charAt(i); if (c[i] == '(') s.push('('); else if (c[i] == ')') { if (!s.empty()) { if (c[i - 1] == '(') { s.pop(); cnt += s.size(); } else { s.pop(); cnt++; } } } } bw.write(Integer.toString(cnt)); br.close(); bw.flush(); bw.close(); } }
'PS > BOJ' 카테고리의 다른 글
BOJ 10866 덱 [Java] (0) | 2021.07.20 |
---|---|
BOJ 10845 큐 [Java] (0) | 2021.07.18 |
BOJ 9012 괄호 [Java] (0) | 2021.07.18 |
BOJ 10828 스택 [Java] (0) | 2021.07.18 |
BOJ 11004 K번째 수 [Java] (0) | 2021.07.17 |