
[문제] stack
https://school.programmers.co.kr/learn/courses/30/lessons/12909
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

🤔 문제풀이
1. 첫 풀이
처음엔 단순히 스택구조로 쌓다가 역방향이면 없애주고 아니면 스택에 쌓다가 마지막 스택에 값이 남아있는 유무로 판단하려 했으나, 테스트케이스와 효율성에서 실패판정을 받았다.
function solution(s) {
let stack = [];
for (const str of s.split('')) {
if (str === '(') {
stack.push(str);
} else {
stack.pop();
}
}
return stack.length > 0 ? false : true;
}
2. 두 번째 풀이
첫 문자열에 역방향일 때 바로 false로 리턴하는 구문만 추가했는데 효율성은 해결되었으나 테스트케이스 2,5, 번이 막혔다
function solution(s) {
let stack = [];
for (const str of s.split('')) {
if (str === '(') {
stack.push(str);
} else {
stack.length === 0 ? false : stack.pop();
}
}
return stack.length > 0 ? false : true;
}
3. 세 번째 풀이
첫 문자열이 역방향일 때만 처리했어야 하는데 0이 아닐 때 모두 처리하다 보니 조건문이 잘못되어 수정했다.
function solution(s) {
let stack = [];
for (const str of s) {
if (str === '(') {
stack.push(str);
} else {
if (stack.length === 0) return false;
stack.pop();
}
}
return stack.length === 0;
}
지문을 제대로 파악하는 훈련이 필요하고, 문제를 텍스토로 풀이하는 습관이 필요해 보인다...
다른 풀이
숫자로 카운팅 해서 풀이하는 방법도 있었다.
function solution(s){
let cum = 0
for (let paren of s) {
cum += paren === '('? 1: -1
if(cum < 0) {
return false
}
}
return cum === 0? true: false;
}'알고리즘 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스 Level1][Javascript] 모의고사 (0) | 2023.02.07 |
|---|---|
| [프로그래머스 Level1][Javascript] 이상한 문자 만들기 (0) | 2023.02.01 |