개발자/알고리즘
짝지어 제거하기
YoungDogg
2022. 12. 17. 13:22
코딩테스트 연습 - 짝지어 제거하기 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음엔 이중 반복문으로 풀었는데 시간 초과가 떴다.
스택이 답이라고 해서 스택으로 했다.
function solution(s)
{
const stack = []
s = s.split('')
s.forEach((_,i,arr)=>{
if(!stack.length || stack[stack.length-1] !== arr[i]){
stack.push(arr[i])
}
else{
stack.pop()
}
})
return stack.length === 0 ? 1 : 0;
}
if(!stack.length || stack[stack.length-1] !== arr[i]){
이 부분이 어려웠다.
!stack.length : '스택이 빈 공간이라면'이란 뜻이다
stack[stack.length-1] !== arr[i] : '스택의 맨 위 값과 반복문 안의 배열 요소가 다르다면'이란 뜻이다
else의 의미는
스택이 빈 공간이 아니거나 스택 맨 위 값과 배열 요소가 같다는 뜻이다.
스택은 다른 문제에서도 쓸 수 있다.
1) 괄호 짝 맞는지
2) 깊이 탐색 때(길 찾기 등)