Problem
Problem URL : 올바른 괄호
[1] Answer Code (18. 07. 25)
bool solution(string s){
bool answer = true;
int cnt = 0;
for(int i=0; i<s.length(); i++){
s[i] == '(' ? cnt ++ : cnt --;
if(cnt < 0) break;
}
if(cnt != 0)
answer = false;
return answer;
}
- 무난하게 풀었다.
[2] Answer Code (20. 01. 30)
class Solution {
private Character LEFT = '(';
private Character RIGHT = ')';
boolean solution(String s) {
if (s.charAt(0) == RIGHT || s.length() % 2 != 0) {
return false;
}
char[] toCharArray = s.toCharArray();
Stack<Character> stack = new Stack<>();
stack.add(toCharArray[0]);
for (int i = 1; i < toCharArray.length; i++) {
if (stack.isEmpty()) {
stack.add(toCharArray[i]);
continue;
}
Character peek = stack.peek();
if (peek == LEFT && toCharArray[i] == LEFT) {
stack.add(toCharArray[i]);
} else if (peek == LEFT && toCharArray[i] == RIGHT) {
stack.pop();
} else if (peek == RIGHT && toCharArray[i] == LEFT) {
return false;
} else if (peek == RIGHT && toCharArray[i] == RIGHT) {
return false;
}
}
return stack.isEmpty();
}
-
괄호 문제를 보자마자 바로 Stack을 떠올렸는데
사실 [1] Answer Code 처럼 푸는 게 더 효율적이다.