[프로그래머스] "코드 처리하기": JS - 1, 0 타입강제변환 규칙

신혜린·2024년 2월 17일
0

알고리즘(javascript)

목록 보기
21/21
post-thumbnail

모범답안

function solution(code) {
    let mode = 0
    
    const ret = code.split('').filter((x,idx)=>{
        if (x === '1') {
            mode = mode === 0 ? 1 : 0
            return false
        }

        if (mode) { 
            return idx % 2 === 1
        }
        return idx % 2 === 0 
    }).join('')
    
    const answer =  ret.length !== 0 ? ret : "EMPTY";
    return answer
}

  • return false : filter 함수 내 x === "1" 인 경우 "1" 은 포함시키지 않기 위함
  • mode = mode === 0 ? 1 : 0 : mode의 값이 0인 경우 1로 변환, 1인 경우 0으로 변환시키기 위한 식
  • if (mode) : 여기서 JS의 타입강제변환 규칙이 적용된다.

    💡 JavaScript에서 숫자 1참(true)으로, 0거짓(false)으로 간주된다. 이는 JavaScript의 타입 강제변환(type coercion)규칙 에 따른 것으로, 불리언 컨텍스트(예: 조건문)에서 1을 사용하면 으로 평가되고, 0을 사용하면 거짓으로 평가된다.



false 를 반환하는 이유와 mode 를 갖고 조건문을 시행하는 게 이해가 되지 않아 검색해 보니 JS에 타입강제변환 규칙이란 게 존재한다는 것을 깨닫게 되었다.
또한, filter 함수 사용 시 조건에 만족하는 해당 값을 포함시키지 않기 위해 false 를 반환하기도 하는구나..!

profile
개 발자국 🐾

0개의 댓글