PS/프로그래머스

Lv0 OX퀴즈

jjw000628 2023. 7. 17. 00:46

https://school.programmers.co.kr/learn/courses/30/lessons/120907?language=javascript 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

quiz배열을 순차적을 돌면서 " = "을 기준으로 배열을 나눴다.

" + "의 포함 여부를 확인하고 계산한 값을 확인한다.

3항연산자를 이용해서 result배열에 결과값을 담아 return했다.

const solution = (quiz) => {
    let result = [];
    for(let item of quiz){
        item = item.split(" = ");
        if(item[0].includes(" + ")){
            temp = item[0].split(" + ");
            parseInt(item[1]) === parseInt(temp[0]) + parseInt(temp[1]) ? result.push("O") : result.push("X");
        }
        else{
            temp = item[0].split(" - ");
            parseInt(item[1]) === parseInt(temp[0]) - parseInt(temp[1]) ? result.push("O") : result.push("X");
        }
    }
    return result;
};

console.log(solution(["3 - 4 = -3", "5 + 6 = 11"]));
console.log(solution(["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"]));

아래 코드는 다른 사람의 코드이다.

map함수를 이용해서 풀었는데, 여기서 새롭게 알게 된 첫번째 점은 구조 분해 할당을 이용하면 좀더 보기 편하게 바꿀 수 있다는 것이다.

두번째는 음수 계산을 3항 연산자를 활용해서 1, -1을 활용했다는 점에서 새롭게 배웠다.

세번째는 parseInt를 활용해 형변환을 했는데 +를 통해서 형변환을 할 수 있다는 것을 알게 되었다.

그리고 아래 코드 말고 다른 코드를 통해서 파이썬과 같이 eval()함수도 있다는 것을 알게 되었다.

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'
    });
}