문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12909
1. 문제를 보고 든 생각
‘(’이 먼저 나오고, 그리고 나중에 ‘)’으로 이 괄호가 닫혀야한다.
그렇다면, 알 수 있는 사실은
- ‘)’이 먼저 나오면 안된다.
- ‘(’의 개수와 ‘)’의 개수는 같아야한다.
그렇다면 0으로 시작하는 변수를 두고, ‘(’이 나오면 1을 더해주고, ‘)’이 나오면 1을 빼주면 될 것 같다.
‘)’이 먼저 나오면 안된다고 했다. → 이 경우는 해당 변수가 음수가 되는 경우이므로 음수가 되면 바로 false를 return 해주면 될 것 같다.
2. 풀이
function solution(s){
let count = 0;
for(let index = 0; index < s.length; index++) {
if(s[index] === '(') {
count++;
}
else if (s[index] === ')') {
count--;
}
if(count < 0) {
return false;
}
}
if(count === 0) {
return true;
}
else {
return false;
}
}
먼저 든 생각대로 코드를 작성했더니 정답이었다!!
나는 count라는 변수를 활용해서 문제를 풀었지만, 스택을 활용해서 문제를 푸는게 정석인 것 같다.
스택을 활용한다면 아래 코드처럼 작성하면 될 것 같다.
function solution(s) {
const stack = [];
for(let char of s) {
if(char === '(') {
stack.push(char);
} else if(char === ')') {
if(stack.length === 0) return false;
stack.pop();
}
}
return stack.length === 0;
}
'Programmers(JavaScript)' 카테고리의 다른 글
[프로그래머스 자바스크립트] ‘모의고사’ 풀어보기 (0) | 2025.01.11 |
---|---|
[프로그래머스 자바스크립트] ‘입국심사’ 풀어보기 (0) | 2024.12.31 |
[프로그래머스 자바스크립트] ‘최소직사각형’ 풀어보기 (2) | 2024.08.07 |
[프로그래머스 자바스크립트] ‘K번째수’ 풀어보기 (0) | 2024.08.07 |
[프로그래머스 자바스크립트] ‘구명보트’ 풀어보기 (0) | 2024.08.07 |