저장을 습관화
코딩 테스트 LV.0 몫 구하기 본문
프로그래머스 LV.0 몫 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120805
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
몫 구하기
문제 설명
정수 정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
제한 사항
0 < num1 ≤ 100
0 < num2 ≤ 100
예시
num1: 10, num2: 5, answer: 2;
num1: 7, num2: 2, answer: 3;
기본 제공 코드
function solution(num1, num2) {
var answer ;
answer = num1%num2
return answer;
}
제출한 내 답
function solution(num1, num2) {
var answer;
answer = Math.floor(num1/num2);
return answer;
}
VSC에서 작성 했던 것
function solution(num1, num2) {
var answer;
if (num1 < num2) {
console.log(num1,"이 ",num2,"보다 작아 나눌 수 없습니다.");
return answer = "error";
} else {
answer = Math.floor(num1/num2);
};
return answer;
};
// 테스트를 위한 함수 호출
// console.log(solution(10, 5));
// console.log(solution(7, 2));
// 하고 싶은 것
// num1보다 num2가 크다면 'num1보다 num2가 크므로 나눌 수 없습니다.' 출력
// num1보다 num2가 작다면 나눈 몫을 answer에 전달
1. 애로사항
if문 까지 써서 num1보다 num2가 크면 '그거 못나눠요!' 라는 메시지를 출력하고 싶었다.
근데 제출해서 내니까 스무개 정도 검사 결과 중 둘 정도 틀리다고 나오더라
왜인지는 말 안해주대
그래서 if문은 빼고
answer = Math.floor(num1/num2); // 이것만 남겨놓고 제출했다. 당연히 통과
2. 헷갈렸던 부분
2-1. / 나누기 연산자와 % 나머지 연산자
/ 연산자는 나눈 값, %연산자는 나누고 남은 값
ex) 5/2 = 2, 5%2 = 1
6/3 = 2, 6%3 = 0
문제 기본 제공 코드에 %있길래 그대로 썼다가 안돼서 뒤늦게 고쳤다.
2-2. 예시에서 7/2의 값으로 3 처럼 정수 결과를 원한다고 써놨다.
해결방법: 검색해서 소수점을 내리는 메소드 Math.floor()를 찾아 적용했다.
그런데 이 메소드를 어디에 넣어야 하는지 몰라 버벅였다.
answer = Math.floor.answer; 같은 것도 해봤다. 안되더라.
이외에도 소수값을 올림하는 Math.celi()나,
소수값을 반올림하는 Math.round()도 있다는걸 알았다.
참고: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
3. 다른 사람이 작성한 답
3-1.
function solution(num1, num2) {
return parseInt(num1 / num2);
}
이 사람은 문자열에서 숫자를 추출하는 parseInt를 사용하였다.
찾아보니 아래와 같은 방식으로 쓰인다고한다.
const myNumber = '3';
console.log(2 + parseInt(myNumber));
// returns 5
문자열로 작성된 myNumber도 숫자로 변경되었다.
단 "큰 수에서는 type number에 string이 들어가는 경우도 있기 때문에, 소수점 이하를 절삭하여 정수 값을 return하려는 목적으로 Math.floor 대신에 parseInt를 사용해서는 안 됩니다." 라는 댓글이 달려있었다.
parseInt는 문자열에서 숫자 추출 용도 Math.floor가 소수점 내리는 용도기억하자
3-2.
const solution = (num1, num2) => Math.floor(num1 / num2)
화살표 함수를 멋지게 사용하셨다. 세련되어 보인다.
3-3.
function solution(num1, num2) {
return Math.trunc(num1 / num2);
}
가장 일반적인 답이다.
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.0 나머지 구하기 (0) | 2023.06.08 |
---|---|
프로그래머스 LV.0 배열 두 배 만들기 (0) | 2023.05.29 |
프로그래머스 LV.0 분수의 덧셈 (0) | 2023.05.28 |
코딩 테스트 LV.0 숫자 비교하기 (0) | 2023.05.28 |
코딩 테스트 LV.0 두 수의 합, 두 수의 차, 두 수의 곱, 두 수의 나눗셈 (0) | 2023.05.28 |