-
[프로그래머스/JavaScript] 조건 문자열 (Feat. eval)IT Study/프로그래머스 2023. 10. 10. 21:07728x90
기본 코드
function solution(ineq, eq, n, m) { var answer = 0; return answer; }
최종 코드
테스트 1 〉통과 (0.06ms, 33.4MB)
테스트 2 〉통과 (0.06ms, 33.4MB)
테스트 3 〉통과 (0.05ms, 33.6MB)
테스트 4 〉통과 (0.06ms, 33.4MB)
테스트 5 〉통과 (0.06ms, 33.4MB)
...
수식이 곧 문자열이라고 생각했는데, 잘못 생각한 듯하여
혹시 "문자열을 수식으로 바꾸는 함수가 있나?" 찾아봤습니다.
eval
그러나 eval은 보안, 성능 저하, 명확하지 않은 코드의 의도들로 인해 사용을 지양한다고 합니다.function solution(ineq, eq, n, m) { // 결과를 담는 answer let answer = 0; // 등호 여부를 확인하는 isEqual const isEqual = eq === "=" ? "=" : ""; // 문자열을 수식으로 바꾸는 calc let calc = eval(`${n} ${ineq}${isEqual} ${m}`); answer = calc ? 1 : 0; return answer; }
찐 최종 코드
동적으로 코드를 실행해야 하는 경우에
new Function이라는 객체를 활용하여 문자열로 표현된 수식을 계산할 수 있다고 합니다.function solution(ineq, eq, n, m) { // 결과를 담는 answer let answer = 0; // 등호 여부를 확인하는 isEqual const isEqual = eq === "=" ? "=" : ""; // 수식을 계산하는 함수 생성 const calculate = new Function('n', 'm', `return n ${ineq}${isEqual} m`); // 함수로 계산식 생성 const calc = calculate(n, m); answer = calc ? 1 : 0; return answer; }
'IT Study > 프로그래머스' 카테고리의 다른 글
[프로그래머스/JavaScript] 달리기 경주 (Feat. 찾기 연산의 시간복잡도) (0) 2023.10.30 [프로그래머스/JavaScript] 주사위 게임 3 (Feat. Map) (0) 2023.10.11 [프로그래머스/JavaScript] 문자열 겹쳐쓰기 (0) 2023.10.10 [프로그래머스/JavaScript] 대소문자 바꿔서 출력하기 (0) 2023.10.10 [프로그래머스/JavaScript] 문자열 반복해서 출력하기 (0) 2023.10.10