본문 바로가기
알고리즘 문제풀이/인프런

[알고리즘] 5-1 올바른 괄호 - Stack 알고리즘(인프런 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의)

by jeonghaemin 2021. 6. 1.
728x90

인프런의 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 강의를 수강하며 간략한 문제 설명, 예습 풀이 코드, 강의에서 설명하는 풀이 코드를 정리하고 있습니다.

  • 문제 링크 : https://cote.inflearn.com/contest/10/problem/05-01
  • 문제 설명 : 괄호로만 이루어진 문자열이 주어졌을때 여는 괄호, 닫는 괄호의 짝이 맞으면 YES, 아니면 NO를 출력하는 문제
  • 예시 : (())) -> 닫는 괄호가 1개더 많기 때문에 NO

풀이

  • Stack 자료구조 사용
package inflearn.stack_queue;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;

//올바른 괄호
public class Main5_1 {

    public static String solution(String s) {
        Stack<Character> stack = new Stack<>();

        for (char c : s.toCharArray()) {
            if (c == '(') {
                stack.push(c);
            } else {
                if (stack.isEmpty()) { //닫는 괄호가 더 많다면
                    return "NO";
                }
                stack.pop();
            }
        }

        if (!stack.isEmpty()) { //여는 괄호가 더 많다면
            return "NO";
        }

        return "YES";
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        System.out.println(solution(br.readLine()));
    }
}

댓글