알고리즘/프로그래머스
프로그래머스 - 쇠막대기 (JavaScript)
시나모온
2020. 5. 7. 16:36
문제 링크입니다 : https://programmers.co.kr/learn/courses/30/lessons/42585?language=javascript
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
자바스크립트는 배열에 기능이 많아서 배열만으로도 충분히 큐, 스택 기능들을 사용할 수 있는 것 같다.
그림을 보면 왼쪽 괄호 "(" 가 추가 될 수록 판때기 쌓아지는 걸 쌓아지는 걸 볼 수가 있다.
그래서 왼쪽 괄호 "(" 가 생길 때마다 스택에 추가해준다.
오른쪽 괄호 ")"는 판때기가 끝나는 부분을 의미한다. 그래서 스택을 팝하면서, cnt를 하나 늘려주면 된다.
이때, 예외적으로 직전 괄호가 왼쪽 괄호 "("이면 판때기의 끝이 아니라 레이저를 쏜거기 때문에 스택 길이 만큼 잘리게 된다. 그래서 레이저 표시 "()" 만큼 뺀 판때기 갯수만큼 더하기 위해서 스택 사이즈에서 1뺀 값을 더해준다.
function solution(arrangement) {
var answer = 0;
let s = new Array();
let cnt = 0;
for(let i = 0; i < arrangement.length; i++) {
if(arrangement[i] === '(') s.push('(');
else {
if(arrangement[i - 1] === '(') {
cnt += (s.length - 1);
} else {
cnt++;
}
s.pop();
}
}
answer = cnt;
return answer;
}
개발 환경 : vscode
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~