코테

짝지어 제거하기

테오구 2022. 5. 14. 20:28
728x90

스택을 이용하면 풀 수 있는 문제이다.

처음에 접근 법은 이랬다.

function solution(s)
{
    const stack = [s[0]]
    for(let i = 1; i< s.length; i++){
        s[i] === stack[i-1] ? stack.pop() : stack.push(s[i])
    }
    console.log(stack)
    return stack.length === 0 ? 1 : 0
}

이유를 살펴보니 a, a를 제거 하고 나서 반복문의 i가 계속 증가하게 되는데 

for i === 1 일 때

stack = [b]

s = baabaa 이고

b !== a 이기 때문에 stack에 추가가 된다.

 

for i === 2 일 때

stack = [b, a]

s = baabaa 이고

a === a 이기 때문에 stack을 pop한다.

 

for i === 3 일 때

stack = [b]

s = baabaa 이고

b !== undefined 이기 때문에 stack에 추가가 된다.

이러면서 벌어진 문제

 

수정을 해주자

function solution(s)
{
    const stack = [s[0]]
    for(let i = 1; i < s.length; i++){
        s[i] === stack[stack.length - 1] ? stack.pop() : stack.push(s[i])
    }
    return stack.length === 0 ? 1 : 0
}

 

728x90

'코테' 카테고리의 다른 글

큰 수 만들기  (0) 2022.06.13
[LeetCode] 617. Merge Two Binary Trees  (0) 2022.06.06
[leetcode] 1254. Number of Closed Islands  (0) 2022.06.04
[leetCode] 695. Max Area of Island  (0) 2022.06.02
애니어그램  (0) 2022.05.16