Coding Test/프로그래머스
[200803] 올바른 괄호 - 연습문제(level2)
csmoon1010
2020. 8. 3. 20:10
1. 문제 이해
- 문자열 s : '(' 또는 ')'로 이루어진 문자열
- 결과 answer : s가 올바른 괄호(짝지어서 닫히는 경우)에는 true, 그렇지 않으면 false
2. 전략
- Stack 컬렉션 이용
(1) '(' 인 경우 : stack에 push
(2) ')' 인 경우
- stack이 empty가 아닌 경우 : stack에서 pop → 짝이 될 수 있는 '('가 앞에 나온 상태
- stack이 empty인 경우 : false
(3) 문자열 s를 모두 본 후 : stack이 empty가 아니면 false
3. 참고사항
(1) 다른 풀이 1 : count 변수를 이용하는 경우
- '(' : count++
- ')' : count --
(결론) count가 0인 경우만 answer = true
4. 코드
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
Stack<Character> stack = new Stack<>();
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == '(')
stack.push('(');
else{
if(!stack.empty()) stack.pop();
else{
answer = false;
break;
}
}
}
if(!stack.empty()) answer = false;
return answer;
}
}