728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12909
728x90
메모리: 52.5 MB, 시간: 6.07 ms
사용 알고리즘: 스택, 큐
알고리즘은 스택과 큐이지만
어차피 문자열에서 열린 괄호가 나오면 스택에 넣어주고, 닫힌 괄호가 나오면 스택에서 빼주는 형식으로 동작한다.
(스택에 열린 괄호만 계속 들어왔다 나감)
즉, 스택에 어떤 값이 들어있는지가 중요한 게 아니라 스택에 몇 개가 들어있는지가 중요한 것이기 때문에
스택을 사용하지 않고 변수에 열린 괄호가 몇 개인지만 저장해 주었다.
class Solution {
boolean solution(String s) {
boolean answer = true;
int count = 0; // 열린 괄호 개수
char[] arr = s.toCharArray();
for(int i = 0; i < arr.length; i++) {
// 열린 괄호인 경우
if(arr[i] == '(') count++;
// 닫힌 괄호인 경우
else {
if(count == 0) { // 열려있는 괄호가 없다면 올바르지 않은 괄호
answer = false;
break;
}
count--;
}
}
// 괄호가 다 닫히지 않았다면 올바르지 않은 괄호
if(count != 0) answer = false;
return answer;
}
}
728x90
'Problem Solving > Programmers' 카테고리의 다른 글
[프로그래머스, 12925] 문자열을 정수로 바꾸기 (java) (0) | 2024.08.01 |
---|---|
[프로그래머스, 43105] 정수 삼각형 (java) (0) | 2024.07.31 |
[프로그래머스, 12916] 문자열 내 p와 y의 개수 (java) (0) | 2024.07.31 |
[프로그래머스, 42628] 이중우선순위큐 (java) (0) | 2024.07.30 |
[프로그래머스, 12939] 최댓값과 최솟값 (java) (0) | 2024.07.30 |