Front-End/Algorithm

[프로그래머스 / JavaScript] Lv.0 몫 구하기

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

 

문제

정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해 주세요.

 

 

제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

 

 

입출력 예

num1 num2 result
10 5 2
7 2 3

 

 


 

내가 작성한 답안

function solution(num1, num2) {
    let answer = parseInt(num1 / num2);
    return answer;
}

7 / 2 = 3.5의 경우처럼 몫이 정수가 아닌 값이 나올 수 있으므로 parseInt()를 이용해 실수를 정수형으로 변환하였다. parseInt()는 문자열 인자를 파싱하여 특정 진수의 정수를 반환한다.

 

 


다른 사람들이 작성한 답안

Math.floor
function solution(num1, num2) {
    let answer = Math.floor(num1 / num2);
    return answer;
}

Math.floor() 함수는 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다. (소수점 이하를 내린다.)

 

 

 

double tilde (~~)
function solution(num1, num2) {
    let answer = ~~(num1 / num2);
    return answer;
}

일반적인 tilde(~)는 주어진 숫자를 -(n+1)하게 되지만, double tilde(~~)는 양수일 경우 Math.floor()와 동일하게 소수점 이하를 내리고, 음수는 Math.ceil()과 동일하게 소수점 이하를 올린다.

 

double tilde가 크롬을 제외한 나머지 브라우저에서는 Math.floor보다 조금 더 빠른 성능을 보인다. 그러면 Math.floor가 아닌 double tilde를 사용하는 것이 더 권장되는가? 에 대한 물음이 생기는데, double tilde 성능 관련 글을 작성한 게시자들은 대부분 코드의 가독성을 위해서는 double tilde보다 Math.floor를 사용하는 것을 권장하고 있다.

 

다만, 내가 작성한 parseInt는 두 함수보다 성능이 훨씬 느리므로 Math.floor()를 쓰는 것이 좋다. 따라서 실수를 정수형으로 변환할 때는 Math.floor()를 사용하는 습관을 들여야겠다.

 

 

 

화살표함수
const solution = (num1, num2) => Math.floor(num1 / num2)

화살표 함수(arrow function)를 사용하면 일반 함수 표현식보다 단순하고 간결한 문법으로 함수를 만들 수 있다.

 

 

let sum = function(a, b) {
  return a + b;
};

기존의 함수 작성법이 위와 같았다면,

 

 

let sum = (a, b) => a + b;

화살표함수는 위와 같이 훨씬 축약하여 코드를 작성할 수 있다. 따라서 살표 함수는 본문이 한 줄인 함수를 작성할 때 유용하다. 화살표함수는 현재 진행 중인 자바스크립트 1회독을 끝내고 더 집중적으로 탐구해 봐야겠다.

 

 

 


[참고 자료]

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

 

프로그래머스

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

programmers.co.kr

https://www.mrlatte.net/code/2022/07/23/double-tilde-javascript

 

자바스크립트에서 double tilde (~~)의 의미 - 라떼군 이야기

Problem자바스크립트를 사용하다보면 ~~ 를 이용해 구현된 코드를 가끔 접하게 되는데, 처음 접하는 경우 어떤 의미인지 알기 어려울 수 있는데, 간단하게 정리해보고자 한다.Solution~~ 는 이중 NOT

www.mrlatte.net

https://dev.to/asadm/the-mysterious-double-tilde-operation-mih

 

The Mysterious Double Tilde (~~) Operation

Have you ever used tilde (~) in your JavaScript code?

dev.to

http://rocha.la/JavaScript-bitwise-operators-in-practice

 

Tilde or the Floor? Practical use for JavaScript bitwise operators. (#1) | rocha.la | JavaScript and my other hobbies

Tilde or the Floor? Practical use for JavaScript bitwise operators. (#1) Submitted by Piotr Rochala on Sat, 11/26/2011 - 12:10 JavaScript bitwise operators are one of these features of JavaScript that we always forget about. It seems like we assume there i

rocha.la

https://ko.javascript.info/arrow-functions-basics

 

화살표 함수 기본

 

ko.javascript.info

 

 

 

반응형