-
boj)4889 - 안정적인 문자열PS/boj 2020. 10. 14. 15:48
import java.io.*; import java.util.Stack; public class boj_4889 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String str; int cnt = 0; while ( !(str = br.readLine()).contains("-") ) { cnt++; Stack<Character> stack = new Stack<>(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c == '}') { if (!stack.isEmpty() && stack.peek() == '{') { stack.pop(); } else { stack.push(c); } } else { stack.push(c); } } char[] arr = new char[stack.size()]; for (int i = arr.length-1; i >= 0; i--) { arr[i] = stack.pop(); } int ans = 0; for (int i = 0; i < arr.length; i++) { if (i % 2 == 0) { // 짝수 if (arr[i] == '}') ans++; } else { // 홀수 if (arr[i] == '{') ans++; } } bw.write(cnt + ". " + ans + "\n"); } bw.flush(); bw.close(); } }
- 성공
- {} 이렇게 정상적인 문자열이 바로 붙어있는 경우 바로바로 스택에서 제거
- 최종적으로 보면 스택에 쌓인 값들은 비정상적인 문자열들
- 스택에 있는 값들을 배열에 반대로 옮겨담음
- 배열에서 2개씩 끊어서 본다고 생각
- 짝수 인덱스는 열린 괄호여야하고 홀수 인덱스는 닫힌 괄호여야함
- 열린괄호 자리인데 닫힌괄호가 오면 ++
- 닫힌괄호 자리인데 열린괄호가 오면 ++
'PS > boj' 카테고리의 다른 글
boj)1926 - 그림 (0) 2020.10.15 boj)10866 - 덱 (0) 2020.10.14 boj)2504 - 괄호의 값 (0) 2020.10.14 boj)4949 - 균형잡힌 세상 (0) 2020.10.13 boj)6198 - 옥상 정원 꾸미기 (0) 2020.10.13