Front-End/Algorithm

[프로그래머스 / JavaScript] Lv.0 숫자 비교하기

Olivia Kim 2023. 1. 26. 08:00
반응형

 

문제

정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1, 다르면 -1을 return하도록 solution 함수를 완성해 주세요.

 

 

제한사항

  • 0 < num1 ≤ 10,000
  • 0 < num2 ≤ 10,000

 

 

입출력 예

num1 num2 result
2 3 -1
11 11 1
7 99 -1

 

 


 

내가 작성한 답안

function solution(num1, num2) {
    var answer = 0;
    if(num1 !== num2){
        answer = -1;
    }else{
        answer = 1;
    }
    return answer;
}

매개변수 값의 비교는 엄격한 동등 연산자인 일치 연산자(strict equality operator) '==='를 사용하였다. 일치 연산자는 자료형의 동등 여부까지 검사하기 때문에, 형 변환 없이 값을 비교하여 두 매개변수의 형이 다를 경우 false를 반환하기 때문이다.

 

또한 num1이 1 ~ 10,000 중 n일때 num2도 n일 확률보다 일치하지 않을 확률이 더 크다고 생각되어 !==를 먼저 작성하였다. 일치하지 않을 가능성 확률이 더 큰데 일치하는지를 먼저 확인하게 되면 (num1 === num2를 if에 먼저 작성하게 되면) 컴퓨터가 해석하는데 시간이 더 지체되지 않을까? 하는 생각이었다.

 

일치 연산자의 경우 문제의 제한사항에 num1과 num2가 정수형임이 명시되어있으니 동등 연산자(equality operator) '==' 를 사용해도 된다. 다만 코테를 처음 풀어보는 상황이라 오류를 명확하게 짚어낼 수 있는 코드를 작성하는 연습을 하는게 좋을지, 해당 문제를 최대한 빠르게 익히는 것을 더 우선해야할지 잘 모르겠다. 그래서 일단은 전자와 같이 코드를 작성하는 연습을 할 예정이다. 문제 푸는게 조금 익숙해진다면 그 다음 단계를 고민해봐도 괜찮겠지 싶은 마음이다.

 

 

 

다른 사람들이 작성한 답안

조건부(conditional) 연산자 ( = 삼항 연산자)
function solution(num1, num2) {
    var answer = num1 === num2 ? 1 : -1;
    return answer;
}

물음표(question mark) 연산자라고도 불리는 조건부 연산자를 사용하면, 조건에 따라 다른 값을 변수에 할당하는 코드를 더 짧고 간결하게 작성할 수 있다.

 

 

let result = condition ? value1 : value2;

조건부 연산자는 위와 같이 사용한다. 평가 대상인 condition이 truthy라면 value1이, 그렇지 않으면(falsy) value2가 반환된다.

 

문제와 같이 condition에 비교 연산자가 사용된다면, 물음표 연산자는 우선순위가 낮으므로 비교연산자가 먼저 실행되고 난 뒤 실행된다. (물음표 연산자는 우선순위 1부터 19까지 중 뒤에서 세번째다.)

 

 

 


[참고 자료]

https://school.programmers.co.kr/learn/courses/30/lessons/120807

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

https://ko.javascript.info/ifelse#ref-1270

 

if와 '?'를 사용한 조건 처리

 

ko.javascript.info

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

 

연산자 우선순위 - JavaScript | MDN

연산자 우선순위는 연산자를 실행하는 순서를 결정합니다. 우선순위가 높은 연산자가 먼저 실행됩니다.

developer.mozilla.org

 

 

반응형