🔗 프로그래머스 Lv.2 - 올바른 괄호
문제

알고리즘 분류
풀이
1. 입력 요소에 따라 push/pop
- 스택을 생성하여 입력 요소가 '('이면
push('(')
- 입력 요소가 ')'이면
- 바로 이전에 저장된 요소가 '('라면
pop
- 그 외엔
push(')')
Stack<Character> stack = new Stack<>();
for(int i = 0; i<s.length(); i++){
if(s.charAt(i) == '('){
stack.push('(');
} else if (s.charAt(i) == ')') {
if(!stack.isEmpty() && stack.peek() == '('){
stack.pop();
} else stack.push(')');
}
}
2. 스택이 비었는지 확인하여 return
- 1번 로직에 따라 반복이 끝난 후, stack에 괄호가 남아있다면 올바르지 않은 괄호이고 stack이 비어있다면 올바른 괄호이다.
if (stack.isEmpty())
return true;
else return false;
전체 코드
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Character> stack = new Stack<>();
for(int i = 0; i<s.length(); i++){
if(s.charAt(i) == '('){
stack.push('(');
} else if (s.charAt(i) == ')') {
if(!stack.isEmpty() && stack.peek() == '('){
stack.pop();
} else stack.push(')');
}
}
if (stack.isEmpty())
return true;
else return false;
}
}