Description
소괄호, 중괄호, 대괄호가 유효하게 열리고 닫혀있는지 검증하여 반환하는 문제입니다.
Solution 1. Stack
public static String isBalanced(String s) {
// Write your code here
Stack<Character> stack = new Stack<>();
for(char c : s.toCharArray()) {
switch (c) {
case '(':
stack.push(')');
break;
case '{':
stack.push('}');
break;
case '[':
stack.push(']');
break;
default:
if (stack.isEmpty() || c != stack.pop()) return "NO";
break;
}
}
return stack.isEmpty() ? "YES" : "NO";
}
스택을 이용하여 열린괄호가 들어 왔을 경우 그에 맞는 닫는 괄호를 스택에 넣어줍니다. 괄호가 중첩될경우 가장 먼저 열린 괄호가 가장 마지막에 닫혀야 합니다. 괄호를 닫아야 하는 시점에 스택이 비어있거나 유효하지 않은 괄호가 있을 경우 실패를 반환하고 모든 경우를 통과 했고 스택이 비어 있으면 성공을 반환해줍니다.
Reference
'알고리즘 > HackerRank' 카테고리의 다른 글
[HackerLank] Simple Text Editor - 문제풀이 (0) | 2022.03.25 |
---|---|
[HakcerLank] Pairs - 문제풀이 (0) | 2022.03.25 |
[HackerLank] Queue using Two Stacks - 문제풀이 (0) | 2022.03.25 |
[HackerLank] Merge two sorted linked lists - 문제풀이 (0) | 2022.03.25 |
[HackerLank] Truck Tour - 문제풀이 (0) | 2022.03.25 |