🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12909
✏️ 풀이
function solution(s){
let stack = 0;
for (const char of s) {
if (char === '(') {
stack++;
} else {
stack--;
}
if (stack < 0) {
return false;
}
}
return !stack;
}
문자열 s를 순회하면서 열린 괄호가 나오면 1을 증가시키고, 닫힌 괄호가 나오면 1을 감소시키기를 반복한다. 그러다가 중간에 한 번이라도 이 값이 음수가 되는 순간 짝이 없는 닫힌 괄호가 생기게 되므로 즉시 false를 반환한다.
그리고 반복문이 종료되었을 때 stack이 0이 아니면 짝이 없는 열린 또는 닫힌 괄호가 남아 있다는 뜻이므로 stack이 0이면 true, 0이 아니면 false를 반환한다.
이 문제를 배열을 활용하거나 stack 자료구조를 직접 구현하여 풀려고 하면 효율성 테스트를 통과할 수 없다.
'연습장 > 프로그래머스 문제풀이' 카테고리의 다른 글
[프로그래머스 Level 2] 멀리 뛰기 - JavaScript (0) | 2023.01.06 |
---|---|
[프로그래머스 Level 2] 점프와 순간 이동 - JavaScript (0) | 2023.01.04 |
[프로그래머스 Level 2] 귤 고르기 - JavaScript (0) | 2023.01.02 |
[프로그래머스 Level 2] 디펜스 게임 - JavaScript (0) | 2022.12.30 |
[프로그래머스 Level 2] 짝지어 제거하기 - JavaScript (0) | 2022.11.19 |