Notice
Recent Posts
Recent Comments
Link
개발자는 기록이 답이다
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(Stack,Queue_올바른 괄호_Stack) 본문
알고리즘/인프런 - Java알고리즘 입문
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비(Stack,Queue_올바른 괄호_Stack)
slow-walker 2023. 9. 30. 03:09
1. 올바른 괄호
예시 입력 1
(()(()))(()
예시 출력 1
NO
강의 풀이(Time: 167ms Memory: 27MB)
중괄호든 대괄호든 괄호 문제는 십중팔구 Stack으로 풀어야 한다.
)(()) // 닫는 괄호가 더 많을때 예외처리 필요
)()( // 닫는 괄호 여는 괄호 개수가 똑같아도 )(는 올바른괄호가 아니기 때문에 예외처리 필요
(()() // 여는 괄호가 더 많을때 예외처리
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 (Character x : str.toCharArray()) {
if (x == '(') stack.push(x);
else {
// 닫는 괄호 일때 stack이 비어있으면 NO
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 kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}