Stack, Queue(자료구조) - 0502. 괄호 문자 제거
private static String solution(String[] strArr) {
StringBuilder sb = new StringBuilder();
Stack<String> stack = new Stack<>();
for(String s : strArr) {
if(s.equals("(")) stack.push(s);
else if(s.equals(")")) stack.pop();
else if(stack.size() == 0) sb.append(s);
}
return sb.toString();
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] strArr = sc.nextLine().split("");
System.out.println(solution(strArr));
}
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 T = new Main();
Scanner kb = new Scanner(System.in);
String str=kb.next();
System.out.println(T.solution(str));
}
해당 문제는 stack
을 이용하여 풀 수 있다. 나의 풀이는 다음의 3가지 경우로 나누어 구현하였다.
(
인 경우 : push
)
인 경우 : pop
숫자
인 경우 : 스택의 사이즈가 0이면 answer
에 추가강의에서는 2가지 경우로 나누어 구현하였다.
(
또는 숫자
인 경우 : push
)
인 경우 : 스택에서 (
가 나올 때까지 모두 pop