Java

#14 자바(JAVA) 알고리즘 문제풀이 : 코딩테스트 대비 / 올바른 괄호

kminnnee 2023. 8. 11. 05:01

Stack 의 대표적인 문제

스택(Stack)은 LIFO (Last In First Out)을 따른다.

스택에서 자료를 넣는 것을 '푸시(push)'라고 하고, 자료를 빼는 것을 '팝(pop)'이라고 한다.

마치 책을 쌓아 놓은 것처럼 생각해 볼 수 있다. 새로운 책(자료)을 제일 위에 올려놓는다(push).

그리고 책을 가져갈 때는 제일 위에 있는 책부터 가져간다(pop).

따라서 가장 마지막에 들어온 것이 가장 먼저 나가는 구조를 가지고 있다.

[출처] (자료구조) 스택, 큐, 덱, 리스트 정리|작성자 써밋

 

써밋의 개발 블로그 : 네이버 블로그

컴퓨터교육과 3학년

blog.naver.com

 

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

public class Inflearn36 {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String input = bf.readLine();
        Stack<Character> stack = new Stack<>();
        boolean answer = true;
        for(char x : input.toCharArray()) {
            if(x == '(') {
                stack.push(x);
            }
            else {
                if(stack.isEmpty()) {
                    answer = false;
                    break;
                }
                stack.pop();
            }
        }
        if(answer && stack.isEmpty()) {
            System.out.println("YES");
        } else {
            System.out.println("NO");
        }
    }
}

풀다가 미처 생각하지 못했던 부분은  if(answer && stack.isEmpty())  이었다.

foreach 문에서 isEmpty() 의 유무만 확인하고 , foreach 문이 다 끝난 후에도 확인을 해야한다는 점을 놓쳤다.

문자열의 배열을 다 확인한 후에도 if(answer && stack.isEmpty()) 를 통해 한번 더 스택이 비어있음을 확인해주자!

.

.

(에드센스 수락해주세여)

 

 

 

 

 

출처 : https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%ED%85%8C%EB%8C%80%EB%B9%84/dashboard

 

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

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

www.inflearn.com