문제 설명
덧셈, 뺄셈 수식들이'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
- [연산자]는 + 와 - 중 하나입니다.
입출력 예 설명
내가 생각한 알고리즘은 다음과 같다.
배열 quiz를 map 함수로 반복하여 문제를 순환한다.
각 문제에서 연산자와 a1, a2, res 항을 분리한다.
연산자에 따라 수식의 참과 거짓을 판별하여 "O", "X" 를 answer 배열에 push 한다.
const solution = (quiz) => {
let answer = [];
quiz.map((q) => {
const operator = q.split(" ")[1]; // 연산자
const a1 = Number(q.split(" ")[0]); // 각 문제의 a1항
const a2 = Number(q.split(" ")[2]); // 각 문제의 a2항
const res = Number(q.split(" ").pop()); // 각 문제의 res항
operator === "-" // 연산자에 따라 -/+ 계산 결과 도출
? answer.push(a1 - a2 === res ? "O" : "X");
: answer.push(a1 + a2 === res ? "O" : "X");
});
return answer; // 결과 반환
};
// 출처: 프로그래머스 인영교 , 황설현 , EllaSEON 님의 풀이
const solution = (quiz) => {
return quiz
.map((el) => el.split(" = "))
.map((el) => {
return eval(el[0]) == el[1] ? "O" : "X";
});
}
// 출처: 프로그래머스 Daejung Kim 님의 풀이
const solution = (quiz) => {
return quiz.map(v => {
const [question, answer] = v.split(" = ");
return eval(question) == answer ? "O" : "X";
});
}