[프로그래머스] Lv.0 - OX퀴즈

·2023년 4월 4일
0

Programmers

목록 보기
12/30
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
  • [연산자]는 + 와 - 중 하나입니다.

입출력 예


🌟 내 풀이

function solution(quiz) {
  let answer = [];
  for (let i = 0; i < quiz.length; i++) {
    const value = quiz[i].split(' ');
    if (value[1] === '+') {
      answer.push(Number(value[0]) + Number(value[2]) === Number(value[4]) ? 'O' : 'X');
    } else {
      answer.push(Number(value[0]) - Number(value[2]) === Number(value[4]) ? 'O' : 'X');
    }
  }
  return answer;
}
  • 공백을 기준으로 나눈 수식을 배열에 담은 뒤, 옳은 수식인지 확인하였다.
  • eval() 함수를 사용한 사람들이 있어서 보다 편리해 보여 무슨 함수인지 찾아보니, 문자로 표현된 JavaScript 코드를 실행하는 함수라고 하였다. 하지만 이제는 사용하지 말라고 한다.

eval()

eval() 더이상 사용하지 않는 이유

  1. 악의적인 영향을 받은 문자열을 eval()로 실행할 경우 사용자의 기기에서 악의적인 코드가 수행될 수 있다.
  2. 제3자 코드가 eval()이 호출된 위치의 스코프를 볼 수 있으며, 이를 이용해 비슷한 함수인 Function으로는 실현할 수 없는 공격이 가능하다.
  3. 느리다.
  4. 변수에 변화가 일어날 수 있다

참고: eval() 공식 문서

profile
🎨

0개의 댓글