<섹션5-Stack,Queue> 1. 올바른 괄호

조이·2022년 1월 19일
0

자바 알고리즘

목록 보기
35/41
post-thumbnail

1. 올바른 괄호

<설명>

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

<입력>

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

<출력>

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

===================================================

<코드>

stack을 사용한다. (을 만나면 스택으로 push라고 그렇지 않으면 pop을 해준다. 문자열이 끝나지 않은 상황에서 스택이 비었다면 답을 NO로 바꾼다. for문이 끝난 후 스택이 비어있는 상황이 아니라면 그 때도 답을 NO로 바꾼다.

import java.util.*;

class Main {	
	public String solution(String str){
		String answer="YES";
		Stack<Character> stack=new Stack<>();
		for(char x:str.toCharArray()) {
			if(x=='(') {
				stack.push('(');
				}
			else {
				if(stack.isEmpty()) return "NO";
				stack.pop();
			}
		}
		if(!stack.isEmpty()) return "NO";
		

		return answer;
	}
		
		
	public static void main(String[] args) {
		Main main = new Main();
		Scanner scan = new Scanner(System.in);
		
		String n=scan.next();
		System.out.println(main.solution(n));
		
		}
}

<중요>

1) Stack

  • Stack<..> stack = new Stack<>();

2) Stack활용

  • stack.push( )
  • stack.pop( )
profile
joy_study

0개의 댓글