Algorithm

[Algorithm/Java] 알고리즘 자바 괄호 문자 제거 (코딩테스트, Stack, Queue, 스택, 큐, 자료구조, 괄호와 안의 문자 제거)

권락현 2022. 4. 14. 22:32


1. 문제 설명

  • 설명
    입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
  • 입력
    첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
  • 출력
    남은 문자만 출력한다.

 

2. 문제 코드 및 풀이 설명

import java.util.Scanner;
import java.util.Stack;

public class RemoveBracket {
  public static void main(String[] args) {
    RemoveBracket T = new RemoveBracket();
    Scanner kb = new Scanner(System.in);
    String str = kb.next();
    System.out.println(T.solution(str));
  }

  // 해결방법
  // 문자를 하나씩 스택에 저장
  // 닫히는 괄호가 나오면 여는 괄호가 나올때 까지 스택에서 모든 문자 제거
  // 끝까지 검사 후 남은 문자 출력
  public String solution(String str) {
    String answer = "";
    // 스택 생성
    Stack<Character> stack = new Stack<>();
    // 문자를 하나씩 검사
    for (char x : str.toCharArray()) {
      if (x != ')') stack.push(x); // ')'이 아닌 경우 스택 추가
      else {
        while (stack.pop() != '(') ; // '('가 나올 때까지 스택 제거
      }
    }
    // 남은 스택 아래서부터 출력
    for (int i = 0; i < stack.size(); i++) {
      answer += stack.get(i);
    }
    return answer;
  }

}

 

3. 출력 예시

입력
(A(BC)D)EF(G(H)(IJ)K)LM(N)

출력
EFLM

 

 


위의 내용은 인프런에서 수강할 수 있는 김태원님의 자바 알고리즘 문제풀이 강의를 바탕으로 공부한 내용을 정리한 내용입니다!

https://inf.run/iAi6

 

자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의

자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성

www.inflearn.com