문제 출처 - 링크

알고리즘 분류
📋 문제 요약 설명
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
- 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.
- 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하시오.
💡 알고리즘 설계 / 접근 방법
- 스택에 '(' 이면 값을 넣고, ')' 이면 값을 꺼낸다.
- 스택에서 값을 꺼낼 때 스택이 비어있으면 괄호가 올바르지 않은 것이다.
✅ 풀이
시간 복잡도 → O(N)
- s.toCharArray() : O(N)
- N = s.length()
- for 루프 : O(N)
- 내부 stack 연산 여러번 : O(1) * N = O(N)
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Integer> stack = new Stack<>();
for(char ch : s.toCharArray()) {
if(ch == '(')
stack.push(1);
else if(ch == ')' && !stack.isEmpty())
stack.pop();
else
return false;
}
return stack.isEmpty();
}
}