:ledger: 문제 설명

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

:one: 제한사항

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

:two: 입출력 예

num1 num2 result
10 5 2
7 2 3

:three: 입출력 예 설명

:pushpin: 3-1) 입출력 예 설명 #1

num1이 10, num2가 5이므로 10을 5로 나눈 몫 2를 return 합니다.

:pushpin: 3-2) 입출력 예 설명 #2

num1이 7, num2가 2이므로 7을 2로 나눈 몫 3을 return 합니다.

:four: 프로그래머스에서 제공한 코드

처음 프로그래머스에서 작성된 코드는 아래와 같다.

function solution(num1, num2) {
    var answer = 0;
    return answer;
}

:ledger: 문제 풀이

// 처음 적용
const solution = (num1, num2) => num1 / num2;
console.log(solution(10, 5)); // 2
console.log(solution(7, 2)); // 3.5

// 소수점이 3.5 가 나오면 실패여서 구글링 후 수정한 코드
const solution = (num1, num2) => Math.floor(num1 / num2);

:one: 함수 선언

  • 화살표 함수를 사용하여 num1, num2 매개변수를 받는다.

:two: 풀이

  • 입출력 예 설명에 맞춰 num1 / num2 해주었다.
  • 화살표 함수의 단일 표현식을 사용하여 리턴을 생략하여 적용
  • 처음 적용한 코드는 소수점이 생겨서 문제 해결이 되지 않아서 소수점 제거하는 방법을 찾기 위해 구글링 진행
  • Math.floor()을 사용하면 소수점을 버리고 정수 부분만 반환되어 사용하여 수정 진행 했음

:three: 결과 반환

  • num1에 10, num2에 5을 대입할 경우 10 * 5 = 2 반환
  • num1에 7, num2에 2을 대입할 경우 7 * 2 = 3 반환

:four: 실행

  • console.log(solution(10, 5));을 호출하면, 2 반환
  • console.log(solution(7, 2));을 호출하면, 3 반환

:fire: 다른 사람의 풀이 참고

parseInt() 를 사용한 풀이 과정이 있었는데, 소수점 이하를 절삭하여 정수 값을 return 하려는 목적으로는 사용하면 안된다는 글을 통해 새로운 사실을 알게 되었고, Math.trunc() 를 사용한 풀이 과정이 있어서 구글링 후 확인해 보니 Math.floor() 와 소수점을 버리는 부분은 같으나, 함수의 동작 방식이 달랐다. (아래 리스트 작성)
입출력 예 #2에서 7을 2로 나눈 몫을 3이라고 가정하였을 때, 다양한 풀이 과정이 있을 수 있지만 확실한 풀이 과정을 위해서라면 문제에 대해 확실하게 알 수 있으면 좋을 것 같다.

:pushpin: Math 함수 종류와 설명

  • Math.round() : 반올림
  • Math.ceil() : 올림
  • Math.floor() : 내림
  • Math.trunc() : 음수,양수 상관 없이 정수 부분만 반환 (소수점 절삭)
// [99명] Math.trunc() 사용한 풀이 과정
function solution(num1, num2) {
    return Math.trunc(num1 / num2);
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges