ultra_dev
괄호문자제거(Stack) 본문
괄호문자제거
설명
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
남은 문자만 출력한다.
예시 입력 1
(A(BC)D)EF(G(H)(IJ)K)LM(N)
예시 출력 1
EFLM
📌pop에는 제일 상단에 있는 것 return 기능까지 포함하고 있는 것 잊지 말자~
while 사용.
stack.size()만큼 돌기
stack.get(i)
import java.util.Scanner;
import java.util.Stack;
class Main {
public String solution(String str) {
String answer = "";
Stack<Character> stack = new Stack<>();
for (char x : str.toCharArray()) {
if (x == ')') {
//pop이 그냥 꺼내고 끝이 아니라 return까지 포함 하고 있음
//꺼내는 게 여는 괄호가 아니면 참이니까 계속 pop~!
//여는 괄호를 꺼내고 멈춰버림
while (stack.pop() != '(');
} else {
stack.push(x);
}
}
//이제 남은 문자열들 돌면서 answer에다가~~
for (int i = 0; i < stack.size(); i++) {
//stack은 get(i)
//char은 += 로 걍~
answer += stack.get(i);
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
String str = sc.next();
System.out.println(T.solution(str));
}
}
'알고리즘' 카테고리의 다른 글
후위식 연산(postfix) (0) | 2023.04.07 |
---|---|
크레인 인형 뽑기(Stack) (0) | 2023.03.31 |
올바른 괄호(Stack) (0) | 2023.03.30 |
K번째 큰 수 (TreeSet) (0) | 2023.03.29 |
매출액의 종류 (0) | 2023.03.29 |
Comments