[알고리즘] 05.Stack, Queue(자료구조) / 01. 올바른 괄호

less than 1 minute read

올바른 괄호

설명

괄호가 입력되면 올바른 괄호이면 “YES”, 올바르지 않으면 ”NO”를 출력합니다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

입력

첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.

출력

첫 번째 줄에 YES, NO를 출력한다.

예시 입력 1

(()(()))(()

예시 출력 1

NO

느낀점

괄호가 나와서 짝을 찾는 문제 같은 경우에는 Stack으로 풀어주면 간단하게 해결!
Stack.add() 와 Stack.phsh() 빨리 치다가 헷갈리는 경우가 있는데 주의!

코드

import java.util.Scanner;
import java.util.Stack;
public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Main T = new Main();
		Scanner sc = new Scanner(System.in);
		String str = sc.next();
		System.out.print(T.solution(str));
	}

	/*
	(()(()))(()
	*/

	public String solution(String str) {
		String answer = "YES";
		Stack<Character> stack = new Stack<>();

		for(char x : str.toCharArray()) {
			if(x == '(') {
				stack.push(x);
			}else {
				if(stack.isEmpty()) {
					return "NO";
				}else {
					stack.pop();
				}
			}
		}
		if(!stack.isEmpty()) {
			return "NO";
		}
		return answer;
	}
}