알고리즘/JAVA
[JAVA] 35. 괄호문자 제거 -STACK
수진보배
2021. 10. 24. 12:31
728x90
설명
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
남은 문자만 출력한다.
예시 입력 1
(A(BC)D)EF(G(H)(IJ)K)LM(N)
예시 출력 1
EFLM
내 풀이
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str = in.next();
Stack<Character> stack = new Stack<>();
String answer = "";
for(char ch : str.toCharArray()){
if(ch == '('){
stack.push(ch);
}else if(ch == ')'){
stack.pop();
}else{
if(stack.isEmpty()){
answer += ch;
}
}
}
System.out.println(answer);
}
}
다른 풀이
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str = in.next();
Stack<Character> stack = new Stack<>();
String answer = "";
for(char ch : str.toCharArray()){
if(ch == ')'){
while(stack.pop() != '(');
}else{
stack.push(ch);
}
}
for(char ch : stack){
answer += ch;
}
System.out.println( answer);
}
}
728x90