728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12909
문제를 보자마자 스택으로 푸는 방법이 생각나서 스택을 이용해 풀었다.
- 나의 풀이
static boolean solution(String s) {
Stack<String> stk = new Stack<>();
for(int i=0; i<s.length(); i++){
char c = s.charAt(i);
if(c == '(') stk.push("(");
else if(!stk.isEmpty() && stk.peek().equals("(")) stk.pop();
else return false;
}
return stk.isEmpty();
}
- 다른 사람의 풀이
나와 달리 스택을 이용하지 않고 푼 풀이가 있어서 가져왔다.
맨 처음에 스택을 이용하지 않는 풀이에 대해 잠깐 생각했 때 왼쪽과 오른쪽 괄호의 개수를 비교한다면
처음부터 ) 이 오는 경우에 대해 어떻게 했는지 의문이 들었다.
그리고 다른 사람의 풀이를 자세를 보니 count가 0보다 작아지는 순간 false를 리턴함으로써 문제를 간단하게 해결하고 있어서 좋다는 생각이 들었다.
class Solution {
boolean solution(String s) {
boolean answer = false;
int count = 0;
for(int i = 0; i<s.length();i++){
if(s.charAt(i) == '('){
count++;
}
if(s.charAt(i) == ')'){
count--;
}
if(count < 0){
break;
}
}
if(count == 0){
answer = true;
}
return answer;
}
}
'알고리즘 > 코딩 테스트 문제' 카테고리의 다른 글
[백준] 11723번 집합(Java) (0) | 2024.03.06 |
---|---|
[프로그래머스] 숫자의 표현(Java) (0) | 2023.11.09 |
[프로그래머스] 할 일 목록(Java) (0) | 2023.10.26 |
[프로그래머스] 키패드 누르기(Java) (0) | 2023.10.22 |
[프로그래머스] 달리기 경주(Java) (0) | 2023.10.22 |