https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=javascript
코드
function solution(s) {
let answer = true;
const stack = [];
for (const ch of s) {
if (ch === "(") {
stack.push("(");
} else {
if (stack.length > 0) {
stack.pop();
} else {
answer = false;
break;
}
}
}
if (stack.length > 0) {
answer = false;
}
return answer;
}
자바스크립트로는 코테 문제를 자주 안 풀어서 쉬운거 해봤더니 너무 쉽다....
근데 다른 사람들 풀이 보니까 개선점이 많이 보이긴 한다.
1. 스택에 push하는 것도, pop하는 것도 각각 한 종류뿐이므로 굳이 배열을 사용하여 스택과 유사하게 구현할 필요없이 +1/-1 이런식으로 표시하면 더 메모리 효율성을 높일 수 있다.
2. 정규표현식 사용.
function is_pair(s){
var result = s.match(/(\(|\))/g);
return result[0] == '(' && result.length % 2 == 0 ? true : false
}
사실 이 코드를 자세히 살펴보니
- "("으로 시작하는지
- "(" 또는 ")"의 개수가 짝수개인지
두 가지만 확인하고 있어서 문제의 조건에 정확히 맞는 풀이는 아니지만 정규표현식을 사용했다는 접근 방법이 좋았다.
'문제풀이 > 자료구조' 카테고리의 다른 글
[Javascript/자바스크립트] 프로그래머스 짝지어 제거하기 (0) | 2025.03.21 |
---|---|
[Python/파이썬] 백준 11652번 카드 (0) | 2025.03.08 |
[Javascript/자바스크립트] 백준 13335번 트럭 (0) | 2025.02.16 |
[Python/파이썬] 백준 1374번 강의실 (0) | 2025.02.13 |
[Python/파이썬] 백준 2910번 빈도 정렬 (0) | 2025.01.15 |