프로그래머스 - OX퀴즈

이한결·2023년 1월 18일
0

프로그래머스

목록 보기
89/107
post-thumbnail

문제 설명

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

제한사항

● 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
● 1 ≤ quiz의 길이 ≤ 10
● X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
● X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
● -10,000 ≤ X, Y ≤ 10,000
● -20,000 ≤ Z ≤ 20,000
● [연산자]는 + 와 - 중 하나입니다.

입출력 예

입출력 예 설명

입출력 예 #1

3 - 4 = -3 은 틀린 수식이므로 "X", 5 + 6 = 11 은 옳은 수식이므로 "O" 입니다. 따라서 ["X", "O"]를 return합니다.

입출력 예 #2

19 - 6 = 13 은 옳은 수식이므로 "O", 5 + 66 = 71 은 옳은 수식이므로 "O", 5 - 15 = 63 은 틀린 수식이므로 "X", 3 - 1 = 2는 옳은 수식이므로 "O" 따라서 ["O", "O", "X", "O"]를 return합니다.

나의 코드

function solution(quiz) {
let splitdata = [];
let result = [];
    for (let i = 0; i < quiz.length; i++) {
        splitdata.push(quiz[i].split('='));
    }

    for (let i = 0; i < splitdata.length; i++) {
        let calcul = eval(splitdata[i][0]);
        let anwser = Number(splitdata[i][1]);
        if (anwser == calcul) {
            result.push('O');
        } else {
            result.push('X');
        }
    }
return result;
}

이 문제는 사실 이해하고 못하고 할 필요가 없다. 읽으면 이해가 될 수 밖에 없다.
그리고 나는 split을 너무 싫어한다. 그럼에도 코딩 테스트 문제에 문자열을 자르는 문제들이
너무 자주 등장한다. split, slice...
eval() 이라는 함수는 프로그래머스에서 배운 함수다. 다른 사람의 풀이를 보다가 알게된 신박한 함수다. 정말 기가막히게 잘 쓰고있다.

  1. '=' 을 기준을 문자를 자른다. 그리고 새로운 배열(splitdata)에 넣는다.
  2. split한 데이터를 가지고 for문을 돌려 splitdata[i][0]를 eval()로 계산한다.
  3. splitdata[i][1] 값들을 answer 변수에 넣고 서로 비교하여 같으면 'O' 틀리면 'X'를 result 배열에 다시 push 한다.
profile
평범한 삶을 위하여

0개의 댓글