[알고리즘] 05.Stack, Queue(자료구조) / 02. 괄호문자제거
괄호문자제거
설명
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
남은 문자만 출력한다.
예시 입력 1
(A(BC)D)EF(G(H)(IJ)K)LM(N)
예시 출력 1
EFLM
느낀점
좀 더 단순하게 생각해도 좋을 것 같다
코드
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.print(T.solution(str));
}
/*
(A(BC)D)EF(G(H)(IJ)K)LM(N)
*/
//방법1
public String solution(String str) {
String answer = "";
Stack<Character> stack = new Stack<>();
for(char x : str.toCharArray()) {
if(x == '(') {
stack.push(x);
}else {
if(stack.isEmpty()) {
answer+= x;
}else if(x == ')'){
stack.pop();
}
}
}
return answer;
}
//방법2
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;
}
}