괄호 문자 제거

최준호·2021년 8월 22일
0

알고리즘 강의

목록 보기
29/79

설명

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

코드

public class ParenthesisString {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        String input1 = in.next();

        String solution = solution2(input1);
        System.out.println(solution);
    }
    public static String solution(String s){
        StringBuilder sb = new StringBuilder();
        char[] chars = s.toCharArray();
        Stack<Character> stack = new Stack<>();

        for(char c : chars){
            if(c == '('){
                stack.push(c);
            }else if(c == ')'){
                if(!stack.isEmpty()) stack.pop();
            }else{
                if(stack.isEmpty()) sb.append(c);
            }
        }

        return sb.toString();
    }
    public static String solution2(String s){
        String answer = "";
        Stack<Character> stack = new Stack<>();
        char[] chars = s.toCharArray();
        for(char c : chars){
            if(c==')'){
                if(stack.isEmpty()) return "실패";
                while(stack.pop() != '(');
            }else
                stack.push(c);
        }

        for(char c : stack){
            answer += String.valueOf(c);
        }
        return answer;
    }
}

solution은 내가 풀이한 방법인데 문제 그대로 답만 구하기 위한 풀이였다. 강의를 듣고 solution2의 코드를 살펴보면서 solution과 비교해보자.

solution은 문제의 답을 구하기 위해 조건에 맞는 String만을 모아서 반환하는 풀이 방법이라면 solution2는 조건에 맞는 문자들을 stack에 저장해두었다가 반환하는 풀이 방법이다. 두번째 방법이 좀 더 자료구조를 잘 활용한 느낌이기 때문에 나는 solution2로 푸는 걸 추천할 것 같다.

문제를 풀기만 하지말고 자료구조를 활용하며 문제를 해결하는 능력을 기르자

profile
코딩을 깔끔하게 하고 싶어하는 초보 개발자 (편하게 글을 쓰기위해 반말체를 사용하고 있습니다! 양해 부탁드려요!) 현재 KakaoVX 근무중입니다!

0개의 댓글