https://www.acmicpc.net/problem/4889
import java.util.Scanner;
import java.util.Stack;
public class Main{
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
// Stack 선언
Stack<Character> stack = new Stack<>();
int num = 1;
while(true) {
int change = 0; // 바꾼 횟수
String str = sc.next(); // 문자열 입력
if(str.contains("-")) // 입력에 - 가 하나 이상 주어진다면 종료
return;
for (int j = 0; j < str.length(); j++) { // 문자열을 문자로 접근 인덱스 0번부터
if (str.charAt(j) == '{') // 여는 괄호라면 스택에 push
stack.push(str.charAt(j));
else { // 닫는 괄호라면?
if (stack.isEmpty()) { // 스택이 비어있으면
stack.push('{'); // 닫는 괄호를 여는 괄호로 바꾸고 스택에 push
change++; // 바꿨기 때문에 change ++
} else if (stack.peek() == '{') // 스택이 비어있지않고 맨 위가 여는 괄호라면
stack.pop(); // 짝이 지어지므로 여는괄호를 pop
}
}
System.out.println(num+". "+((stack.size()/2)+change)); // change 횟수와 스택 길이의 반을 더한 값
stack.clear(); // 다음을 위해 스택 비우기
num++; // 다음 반복문 시작
}
}
}
풀이 :
'코딩테스트 > 백준' 카테고리의 다른 글
[백준-자바] 4949번 균형잡힌 세상 / 2022.03.17 (0) | 2022.03.17 |
---|---|
[백준-자바] 10773번 제로 / 2022.03.15 (0) | 2022.03.15 |
[백준-자바] 9012번 괄호 / 2022.03.08 (0) | 2022.03.08 |
[백준-자바] 2502번 떡 먹는 호랑이 / 2022.03.07 (0) | 2022.03.07 |
[백준-자바] 2217번 로프 / 2022.03.07 (0) | 2022.03.07 |