thumbnail

[lv.0] OX 퀴즈 | 프로그래머스

[lv.0] OX 퀴즈 | 프로그래머스

📋 [ 프로그래머스 ] 시리즈 몰아보기 (17)

✏️ (lv.0) : OX 퀴즈

덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어질 때 수식이 옳다면 O를, 틀리다면 X를 return하는 solution을 작성하라


  • 연산 기호와 숫자 사이는 항상 하나의 공백이 존재한다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않는다.

  • 1 ≤ quiz의 길이 ≤ 10

  • -10,000 ≤ X, Y ≤ 10,000, -20,000 ≤ Z ≤ 20,000

  • 연산자는 +, -만 주어진다.


연산 기호와 숫자 사이는 항상 하나의 공백이 존재하기 때문에 공백을 기준으로 나누어 새로운 배열로 초기화한 후 계산을 진행하면 되겠다.

  • quiz의 각 원소를 순회하며 str.split()메소드를 이용해 문자열을 자른다.

    • 파라미터로는 공백을 입력한다. ex) str.split(' ');
  • 한번의 루프에 문자열 자르기 및 계산을 같이 진행하여 코드를 간소화한다.

          
1 // 최초로 제출한 solution
2 function solution(quiz) {
3 var answer = [];
4 let temp = [];
5
6 quiz.forEach(item => {
7 temp = item.split(" ");
8 switch (temp[1]) {
9 case "+":
10 if (parseInt(temp[0]) + parseInt(temp[2]) == parseInt(temp[4]))
11 answer.push("O");
12 else answer.push("X");
13 break;
14 case "-":
15 if (parseInt(temp[0]) - parseInt(temp[2]) == parseInt(temp[4]))
16 answer.push("O");
17 else answer.push("X");
18 break;
19 }
20 });
21 return answer;
22 }
23
24 // 개선된 solution
25 function bestSolution(quiz) {
26 return quiz
27 .map(e => e.split(" = "))
28 .map(item => {
29 // eval()메소드를 이용하면 문자열의 계산이 가능하다.
30 return eval(item[0]) == item[1] ? "O" : "X";
31 });
32 }
# 프로그래머스
# JS
# javascript
# 알고리즘
# 코딩테스트

💡 로그인 하지 않아도 댓글을 등록할 수 있습니다!

👨‍💻 관련 포스트