2. 괄호문자 제거
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램
입력) 첫 줄에 문자열이 주어집니다.
출력) 남은 문자만 출력합니다.
1)
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static String solution(String str) {
String answer = "";
Stack<Character> stack = new Stack<>();
for (char x : str.toCharArray()) {
if (x==')') {
while (stack.pop()!='('); // pop한 것을 return // '('를 pop하고 멈춤
}
else stack.push(x); // '('와 문자는 push
}
for (int i=0; i<stack.size(); i++) answer += stack.get(i);
return answer;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(solution(str));
}
}
2)
import java.util.Scanner;
import java.util.Stack;
public class Main {
public static String solution(String str) {
String answer = "";
Stack<Character> stack = new Stack<>();
for (char x : str.toCharArray()) {
if (x==')') {
int last = stack.lastIndexOf('(');
int size = stack.size();
for (int i=last; i<size; i++) {
stack.pop(); // 가장 가까운 '('부터 모든 문자 pop
}
}
else stack.push(x); // '('와 문자는 push
}
for (char x : stack) {
answer += x;
}
return answer;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
System.out.println(solution(str));
}
}
결과
입력
(A(BC)D)EF(G(H)(IJ)K)LM(N)
출력
EFLM
'알고리즘(Java) > Stack & Queue' 카테고리의 다른 글
[알고리즘]Queue - 공주 구하기 (0) | 2021.08.07 |
---|---|
[알고리즘]Stack - 쇠막대기 (0) | 2021.08.05 |
★[알고리즘]Stack - 후위식 연산(postfix) (0) | 2021.08.05 |
[알고리즘]Stack - 크레인 인형뽑기(카카오) (0) | 2021.08.04 |
[알고리즘]Stack - 올바른 괄호 (0) | 2021.08.04 |
댓글