반응형

1. 올바른 괄호

 

설명

괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.

(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

입력

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

출력

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

예시 입력 1 

(()(()))(()

예시 출력 1

NO

 


접근 방법

스택이 무엇인지 알고, 간단한 메소드만 사용하면 끝이다.

스택이란, 한쪽 끝에서만 데이터를 넣고 다른 한쪽에서는 데이터를 출력할 수 있도록 만든 자료구조.

흔히 후입선출이라고 부르는 LIFO(Last In, First Out) 구조이다.

 

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(x);
			else {
				if(stack.isEmpty())	return "NO";
				stack.pop();
			}
		}
		if(!stack.isEmpty())	return "NO";
		return answer;
	}
	
	public static void main(String args[]) {
		
		Main T = new Main();
		
		Scanner sc = new Scanner(System.in);
		
		String b = sc.nextLine();
		System.out.println(T.solution(b));
		
	}		
}

 


이 글의 문제는 인프런 강의에서 참고하였습니다.

 

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

 

반응형

+ Recent posts