function solution(code) {
let mode = 0; let answer = ''
let empty = code.split('').filter(i=>i!=='1').length
if(empty==0) return 'EMPTY'
for(let i=0; i<code.length; i++) {
if(code[i] == '1') { mode == 0 ? mode = 1 : mode = 0 }
if(mode =='0' && code[i] !== '1') {
i%2==0 ? answer += code[i] : answer += '2'
} else if(mode == '1' && code[i]!='1') {
i%2==1 ? answer += code[i] : answer += '2'
}
}
return answer.split('').filter(i=>i!=='2').join('')
}
mode는 현재 모드를 나타낸다. 처리할 문자열이 없는 경우를 출력하기 위해 filter를 사용하여 1이 아닌 문자열의 길이를 저장하고, empty가 0이라면 EMPTY를 리턴한다.
for문에서는 code를 순회한다. 만약 인덱스 값이 1이라면 모드를 변경한다. 그리고 모드에 따라 설명대로 계산한다. 모드에 맞지 않는다면 2를 추가하고, 마지막 리턴할 때 2를 제외한 문자열을 리턴한다.