Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

ultra_dev

괄호문자제거(Stack) 본문

알고리즘

괄호문자제거(Stack)

ultra_dev 2023. 3. 30. 00:59

괄호문자제거

설명

입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.

입력

첫 줄에 문자열이 주어진다. 문자열의 길이는 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