728x90
[Javascript] (프로그래머스) 짝지어 제거하기 (level 2)
💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.
내 풀이
function solution(s)
{
const stack = [''];
for (let i = 0; i < s.length; i++) {
let curIndex = stack.push(s[i]) - 1;
if (stack[curIndex - 1] === stack[curIndex]) {
stack.pop();
stack.pop();
}
}
return stack.length === 1 ? 1 : 0;
}
- 투포인터로 돌리려고 코드를 짜고 있었습니다.
- 근데 갑자기 이게 도대체 뭐하는 짓이지… 라는 현타가 오면서 더 좋은 방법이 없을까? 생각하게 되었습니다.
- 그리하여 생각한게 “올바른 괄호” 문제처럼 배열을 스택처럼 사용해서 같으면 pop할 수 있지 않을까? 생각하게 되었습니다.
- 지금 생각하니 이 아이디어는 “카카오 인형 뽑기” 문제와도 유사하네요.
- 풀이 설명
- 1) 스택이 아예 비면 현재 인덱스 -1 을 했을 때
stack[-1]
에 접근해버리니 첫 번째는 빈 문자열로 채워 놓고 시작합니다. - 2) 배열에 push()하면 return 값으로 배열의 길이가 나온다는걸 이용해서, length -1로 현재 인덱스를 구합니다.
- 3) 스택에 현재 인덱스와 이전 인덱스의 문자가 같으면 둘다 pop() 해줍니다.
- 4) 반복 ⇒ 스택이 빈 문자열만 남으면 짝이 다 맞는거네요.
- 1) 스택이 아예 비면 현재 인덱스 -1 을 했을 때
배운 점, 느낀 점
- 완전 탐색으로 접근하다가 이거 좀 아닌데… 구현 좀 빡센데… 하면 다른 좋은 방법이 있는거네요.
- 매일 풀어보면서 다양한 좋은 풀이를 경험 해야겠습니다.
'Coding Test > JavaScript' 카테고리의 다른 글
[Javascript] (프로그래머스 level 0) 양꼬치 (0) | 2022.10.09 |
---|---|
[Javascript] **(프로그래머스 level 0) 짝수는 싫어요** (0) | 2022.10.07 |
[Javascript] (프로그래머스 level 2) 카펫 (0) | 2022.09.30 |
[Javascript] (프로그래머스 level 2) 올바른 괄호 (1) | 2022.09.29 |
[Javascript] (프로그래머스) 최솟값 구하기 (level 2) (0) | 2022.09.27 |
코드카타 못 푼 문제 (재귀 함수) (최단 경로?) (0) | 2022.08.18 |
[Javascript] (프로그래머스 level 2) 피보나치 수 (0) | 2022.08.15 |
[Javascript] (백준 11170) 0의 개수 (0) | 2022.07.09 |
댓글