프로그래머스 Lv.0 [OX퀴즈] (정답률 하위 TOP 10)

세나정·2023년 4월 23일
0

내 풀이

그냥 forEach문을 사용해서 각 인덱스를 공백을 기준으로 split한 후
각 인덱스의 계산과 부호를 따져 결과값을 비교한 후 정답이 될 ans배열에 맞게 넣어주면 됨

function solution(quiz) {
    ans = [];
    quiz.forEach(v => {
        res = 0;

        quiz1 = v.split(' ')

        const X = quiz1[0]
        const Y = quiz1[2]

        if (quiz1[1] === "+") {
            res = Number(quiz1[0]) + Number(quiz1[2])
        } else {
            res = Number(quiz1[0]) - Number(quiz1[2])
        }

        res === Number(quiz1[4]) ? ans.push("O") :  ans.push("X")
    })

    return ans
}

다른 사람 풀이

독특하고도 명시적인 풀이가 있었다.

function solution(quiz) {
    var answer = [];
    return quiz.map(t => {
        const [calc, result] = t.split(' = ');
        const sign = calc.includes('+') ? 1 : -1
        const [a, b] = calc.split(sign === 1 ? ' + ' : ' - ');

        return +a + (+b * sign) === +result ? 'O' : 'X'
    });
}

split을 할 때마다 비구조화 할당으로 split된 값을 계속 나누고 sign에 삼항 연산자를 통한 1, -1 값을 지정해주어 마지막 계산기

return 시엔 양수로만 계산하되 사인을 곱해주는 형식으로 하셨다.
split을 할 떄마다 비구조화 할당으로 배열에 넣어주는 것이 참 참신

여기서,

a와 b 그리고 result애 +를 붙여준 것은 문자를 '정수'로 만들기 위해서이다.

profile
기록, 꺼내 쓸 수 있는 즐거움

0개의 댓글