boj)4889 - 안정적인 문자열
2020. 10. 14. 15:48ㆍPS/boj
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 |