문제
https://school.programmers.co.kr/learn/courses/30/lessons/12909
풀이 과정
스택을 활용하여 풀었다.
- 여는 괄호(
(
)라면 스택에 넣어준다. - 닫는 괄호라면(
)
) 스택 제일 위가 여는 괄호인지 확인한다.
- 여는 괄호라면 스택에서 꺼낸다. (짝이 맞으니 없애기)
- 닫는 괄호라면 올바른 괄호가 아니므로
false
를 반환한다.
- 스택이 비었다면
true
를 그렇지 않다면 올바른 괄호가 아니므로false
를 반환한다.
이 문제는 스택 / 큐 카테고리로 분류되어 있지만, 스택을 쓰지 않고도 괄호를 더하고 빼서 해결할 수도 있다.
코드
1) 스택을 활용한 풀이
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char bracket = s.charAt(i);
if (bracket == '(') {
stack.push(bracket);
} else {
if (!stack.empty()) {
char beforeBracket = stack.peek();
if (beforeBracket == '(') {
stack.pop();
} else {
return false;
}
} else {
return false;
}
}
}
return stack.empty() ? true : false;
}
}
2) 스택 활용하지 않은 풀이
class Solution {
boolean solution(String s) {
int count = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') {
count++;
} else {
count--;
}
if (count < 0) {
return false;
}
}
return count == 0 ? true : false;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[Java] 다리 위를 지나는 트럭 (0) | 2022.10.01 |
---|---|
[Java] 완주하지 못한 선수 (0) | 2022.10.01 |
[Python] H-Index (0) | 2022.09.22 |
[Python] 후보키 (0) | 2021.10.28 |
[Python] 셔틀버스 (0) | 2021.10.27 |