본문 바로가기

Coding Test/Programmers

[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 86 - OX퀴즈 )

728x90

 

# 문제

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



# 답안

// 1. 입력: 문자열 배열 quiz
// 2. 출력: "O", "X"를 담은 배열

// 각 수식을 '=' 기호를 기준으로 왼쪽과 오른쪽으로 나누기
// 각 수식을 평가하여 결과를 비교


function solution(quiz) {
  return quiz
    .map((el) => el.split(" = "))
    .map((el) => {
      return eval(el[0]) == el[1] ? "O" : "X";
    });
}



# 인사이트

// 기존 배열을 새로운 배열을 만들어야한다면 map을 써야한다는 것을 떠올려보자.

 

  1. 첫 번째 map 함수: map 함수를 사용하여 입력 배열 quiz의 각 요소를 처리한다. split(" = ") 메서드를 사용하여 각 수식을 '=' 기호를 기준으로 왼쪽과 오른쪽으로 나눈다.
    • ["3 - 4", "-3"]
    • ["5 + 6", "11"]
  2. 두 번째 map 함수: 다음 map 함수에서는 각 수식을 평가하여 결과를 비교한다. 먼저 eval(el[0])를 사용하여 수식을 계산하고, 이를 el[1]과 비교하여 결과를 결정한다.
    • 첫 번째 수식: 3 - 4를 계산하여 -1이 된다. 이것을 -3과 비교하여 다르므로 "X"를 반환한다.
    • 두 번째 수식: 5 + 6을 계산하여 11이 된다. 이것을 11과 비교하여 같으므로 "O"를 반환한다.
  3. 결과 반환: 마지막으로 map 함수에 의해 반환된 각 결과를 배열로 포장하여 반환한다.   //  ["X", "O"]

 

728x90