[프로그래머스 코딩테스트 연습문제] OX퀴즈 | 알고리즘 설명 & 문제 풀이 with 자바스크립트 (Javascript)

Re_Go·2024년 1월 17일
0

코딩테스트연습

목록 보기
78/98
post-thumbnail
post-custom-banner

1. 첫번째 문제 풀이(2024-01-17)

해당 문제의 경우 이항에 대한 가감 연산을 수행하기 때문에 주어지는 값이 일정합니다. 즉 공백을 기준으로 분할을 하게 되면 두개의 피연산자와 하나의 연산자, 하나의 등가 기호 및 하나의 결과값 총 다섯개가 주어지게 되죠.

여기서 등가 기호는 활용을 안한다 치고, 나머지 구분된 값들을 각각 변수들에 할당한 후 연산자의 기호에 따라 더하기, 빼기 연산을 수행합니다. 물론 이 방법을 제외하고도 전달 받은 문자열을 자바스크립트에서 해석 가능한 상태라면 표현식을 수행하도록 하는 eval 메서드를 사용하면 쉽게 해결이 되기도 하지만

이 문제의 의도 자체가 eval 보다는 각 요소의 활용에 중점을 두지 않았나 싶어서 해당 메서드로 풀지는 않았습니다. (다만 eval을 이용하는 답안 또한 올려두겠습니다.)

// 1. eval을 사용하지 않는 방법
function solution(quiz) {

    const result = [];

    quiz.forEach((line) => {
        let letterArray = line.split(" ");
        let operand1 = Number(letterArray[0]);
        let operand2 = Number(letterArray[2]);
        let operator = letterArray[1]
        let letterResult = Number(letterArray[4]);
     
           result.push(letterResult === (operator === "+" ? operand1 + operand2 : operand1 - operand2) ? "O" : "X")
    });
    return result;  
}


// 2.eval을 사용한 방법
  function solution(quiz) {

    const answer = [];
    quiz.forEach((line) => {
        let letterArray = line.split("=");
        let calc = letterArray[0];
        let result = Number(letterArray[1]);

        let trueResult  = eval(`${calc}`)
       
        answer.push(trueResult === result ? "O" : "X")
    })
    return answer;
}
profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.
post-custom-banner

0개의 댓글