Prg-Lv.0-OX퀴즈

이은지·2022년 12월 12일
0

코딩테스트

목록 보기
30/76

문제

덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.

입출력 예 설명

quiz = ["3 - 4 = -3", "5 + 6 = 11"] / result = ["X", "O"]
quiz = ["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] / result = ["O", "O", "X", "O"]

풀이

function solution(quiz) {
  return quiz.map(v => {
    const [calc, result] = v.split(' = '); // =을 기준으로 잘라서 구조분해 할당
    const sign = calc.includes('+') ? 1 : -1 // +유무를 확인해서 1 or -1을 변수에 할당
    const [a, b] = calc.split(sign === 1 ? ' + ' : ' - '); // sign에 + or -를 넣고 그 기준으로 계산식을 자름

    return +a + (+b * sign) === +result ? 'O' : 'X' //map함수가 새로운 배열을 반환하는 거니까 push를 안해도됨..!
    //a, b 앞에 +가 있는건 묵시적 형변환? 그거해줄려고
  });
}

와..너무 어려운 문제였던거 같다 검색할 때 eval함수를 사용한것도 많았지만 사용을 지양한다고 되어있어 다른방법으로 한 풀이를 가져와봤다
map을 사용해서 > =을 기준으로 잘라서 구조분해 할당을 하고 > +기호의 유무에 따라 1, -1을 반환한 변수를 지정 > calc를 sign기준으로 잘라서 > 마지막 return 에서 계산
나는 숫자, 수식임을 인지해야 하는거에 집중해서 하루종일 검색만 했던것 같다
어떻게 이런생각을 할까.. 난아직 멀었다ㅠㅠ

0개의 댓글