728x90
반응형
▷ 문제
괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.
* 입력
첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.
* 출력
첫 번째 줄에 YES, NO를 출력한다.
▷ 입력 예시
(()(()))(()
▷ 출력 예시
NO
▷ 풀이
import java.util.Scanner;
import java.util.Stack;
public 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 main = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
kb.close();
System.out.println(main.solution(str));
}
}
▷ 핵심 포인트
1. Stack 자료구조의 LIFO 특성을 이용합니다.
반응형
'Algorithm > Stack, Queue' 카테고리의 다른 글
[알고리즘]공주구하기 - Queue (0) | 2021.10.27 |
---|---|
[알고리즘]쇠막대기 (0) | 2021.10.26 |
[알고리즘]후위연산자(Postfix) (0) | 2021.10.26 |
[알고리즘]크레인 인형뽑기(카카오) (0) | 2021.10.25 |
[알고리즘]입력받은 문자열 중 괄호 안의 문자 제거 (0) | 2021.10.24 |