괄호 문자 제거
문제
설명
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
남은 문자만 출력한다.
예시 입력 1
(A(BC)D)EF(G(H)(IJ)K)LM(N)
예시 출력 1
EFLM
해결방법
- 스택으로 구현하여, 닫는 괄호를 만나면 여는 괄호를 만날 때 까지 pop()을 한다.
코드
import java.util.*;
class Main {
public String solution(String str) {
String answer = "";
Stack<Character> stack = new Stack<>();
for (char x : str.toCharArray()) {
// 닫는 괄호를 만나면 (어차피 여는 괄호는 있으므로)
if (x == ')') {
// 그 전의 것들을 전부 제거한다. 여는 괄호를 만날때 까지.
while (stack.pop() != '(') ;
} else stack.push(x);
}
// 남은 문자열을 조합한다.
for (int i = 0; i < stack.size(); i++) answer += stack.get(i);
return answer;
}
public static void main(String[] args) {
Main.Main T = new Main.Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}