https://school.programmers.co.kr/learn/courses/30/lessons/12973
- 입출력 예 #1
- 위의 예시와 같습니다.
- 입출력 예 #2
- 문자열이 남아있지만 짝지어 제거할 수 있는 문자열이 더 이상 존재하지 않기 때문에 0을 반환합니다.
function solution(s){
let result = [];
for(let i = 0; i < s.length; i++){
if(result[result.length - 1] === s.charAt(i)){
result.pop();
} else {
result.push(s.charAt(i));
}
}
return result.length === 0 ? 1 : 0;
}
"baabaa"
i = 0;
result 는 비어있기 때문에 바로 else 로 넘어갑니다.
result.push(s.charAt(i)) === 'b'
그럼 현재 result 에는 result = ['b'] 가 담겨있습니다.
i = 1;
result[result.length - 1] === result[0] 을 뜻합니다.
결국 'b' 라는 뜻입니다.
s.charAt(1) 은 현재 'a' 입니다. 따라서 if문이 아닌 else 로 넘어갑니다.
else에서 result에 'a'를 push 하면
result = ['b', 'a'] 가 됩니다.
i = 2;
result[result.length - 1] === result[1] 입니다. 그리고 result[1]은 'a' 입니다.
s.charAt(2) 도 'a' 입니다.
그럼 if 조건에 해당됩니다. 'a' === 'a'
따라서 result.pop()을 통해 ['b', 'a']에서 'a'를 빼버립니다.
그럼 현재 result = ['b'] 만 담겨있습니다.
i = 3;
result[result.length - 1] === result[0] 입니다. 'b' 하나 들어있기 때문입니다.
'b' 와 s.charAt(3) 을 비교하면 둘 다 'b' 입니다.
따라서 result.pop() 을 통해 result는 [] 빈 배열이 됩니다.
i = 4;
result는 빈배열이기 때문에 else로 넘어갑니다.
result.push(s.charAt(4)) 'a'를 넣어줍니다.
i = 5;
result[result.length - 1] === result[0] 그리고 현재 'a'만 담겨져있습니다.
s.charAt(5) === 'a' 입니다.
따라서 result.pop()을 통해 담겨있는 'a'를 제거합니다.
마지막으로 짝지어 모두 제거할 수 있는 경우 1을 반환하라고 했습니다.
짝지어 모두 제거 된 경우 result.length === 0 이 됩니다.
result.length === 0 ? 1 : 0
0이 된 경우 1을 반환하고 아니면 0을 반환해 문제를 해결합니다.