Lv. 0 - 몫 구하기 풀이 과정
문제 설명
정수 num1
과 num2
가 매개변수로 주어질 때,
num1
과 num2
의 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤
num1
≤ 100 - 0 ≤
num2
≤ 100
입출력 예
num1 | num2 | result |
---|---|---|
10 | 5 | 2 |
7 | 2 | 3 |
입출력 예 설명
3-1) 입출력 예 설명 #1
num1
이 10, num2
가 5이므로 10을 5로 나눈 몫 2를 return 합니다.
3-2) 입출력 예 설명 #2
num1
이 7, num2
가 2이므로 7을 2로 나눈 몫 3을 return 합니다.
프로그래머스에서 제공한 코드
처음 프로그래머스에서 작성된 코드는 아래와 같다.
function solution(num1, num2) {
var answer = 0;
return answer;
}
문제 풀이
// 처음 적용
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);
함수 선언
- 화살표 함수를 사용하여
num1
,num2
매개변수를 받는다.
풀이
- 입출력 예 설명에 맞춰
num1 / num2
해주었다. - 화살표 함수의 단일 표현식을 사용하여 리턴을 생략하여 적용
- 처음 적용한 코드는 소수점이 생겨서 문제 해결이 되지 않아서 소수점 제거하는 방법을 찾기 위해 구글링 진행
- Math.floor()을 사용하면 소수점을 버리고 정수 부분만 반환되어 사용하여 수정 진행 했음
결과 반환
-
num1
에 10,num2
에 5을 대입할 경우 10 * 5 = 2 반환 -
num1
에 7,num2
에 2을 대입할 경우 7 * 2 = 3 반환
실행
-
console.log(solution(10, 5));
을 호출하면, 2 반환 -
console.log(solution(7, 2));
을 호출하면, 3 반환
다른 사람의 풀이 참고
parseInt()
를 사용한 풀이 과정이 있었는데, 소수점 이하를 절삭하여 정수 값을 return 하려는 목적으로는 사용하면 안된다는 글을 통해 새로운 사실을 알게 되었고,
Math.trunc()
를 사용한 풀이 과정이 있어서 구글링 후 확인해 보니 Math.floor()
와 소수점을 버리는 부분은 같으나, 함수의 동작 방식이 달랐다. (아래 리스트 작성)
입출력 예 #2에서 7을 2로 나눈 몫을 3이라고 가정하였을 때, 다양한 풀이 과정이 있을 수 있지만 확실한 풀이 과정을 위해서라면 문제에 대해 확실하게 알 수 있으면 좋을 것 같다.
Math 함수 종류와 설명
-
Math.round()
: 반올림 -
Math.ceil()
: 올림 -
Math.floor()
: 내림 -
Math.trunc()
: 음수,양수 상관 없이 정수 부분만 반환 (소수점 절삭)
// [99명] Math.trunc() 사용한 풀이 과정
function solution(num1, num2) {
return Math.trunc(num1 / num2);
}
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges