카테고리 없음
[프로그래머스 / 자바 / Lv.2] 12909 올바른 괄호
HHRR
2024. 7. 10. 22:47
문제
자바 개념 정리
- String 문자열에서 인덱스 i값 뽑아오기 : `charAt(i)`
- 스택 생성
Stack<Integer> stack = new Stack<>(); // push, pop, peek, empty, search 지원
풀이
() 쌍이 올바르기 위해서는 ( 이후에 )가 무조건 와야한다.
따라서 스택을 생성하여 ( 인 경우에 push를 하고 )인 경우에 pop을 했을 때 최종적으로 올바른 괄호라면 스택이 비어있어야한다.
1. Character 타입으로 스택을 생성한다. (charAt()을 사용하기 위해)
2. 입력값을 charAt으로 순서대로 순회하고, ( 인 경우 스택에 push를 해준다.
3. 만약 ) 인 경우에는 스택을 pop 해주는데, 이 때 스택이 비어있는 경우에 pop을 해줄 수 없으며 올바르지 않은 괄호기때문에 false를 반환해준다.
4. stack.isEmpty()를 반환하는데, isEmpty()는 스택이 비어있을 경우 true, 아닐 경우 false를 반환한다.
class Solution {
boolean solution(String s) {
Stack<Character> stack = new Stack<>(); // Character로 스택 생성
for (int i=0; i<s.length(); i++){
if (s.charAt(i) == '(') {
stack.push(s.charAt(i));
} else if (s.charAt(i) == ')') {
if (stack.isEmpty()) return false; // 스택이 비어있을 경우 pop 하지 말고 return false
stack.pop();
}
}
return stack.isEmpty();
}
}