연필 1다스는 12자루이고, 학생 1인당 연필을 1자루씩 나눠 주어야 한다.
n명의 학생 수를 입력받았을 때 필요한 연필의 다스 수를 계산
function solution(n){
let oper = n % 12;
let answer = (oper > 0 ? answer = Math.floor(n / 12) +1 : answer = n / 12);
return answer;
}
console.log(solution(24)); // 2
가장 기본적인 조건문 if
을 삼항 연산자로 변경한 코드이다.
학생당 1자루씩 나눠 주어야 하므로
입력받는 n(학생 수) 와 12를 나눈 나머지 값을 oper 변수 안에 넣는다.
12를 나눈 나머지 값 n % 12
을 넣는 이유는
나머지 값이 있다면 oper 변수의 값은 0보다 큰 값을 갖게 되고
12자루 내에서 못 받은 학생이 있다는 의미가 된다.
삼항 연산자를 통해 나머지 값이 0 이 아닌 경우
한 자루를 더 준비해야 +1
학생 모두에게 연필을 나눠 줄 수 있다.
function solution(n){
return Math.ceil(n / 12);
}
console.log(solution(25));
소수점 값이 있다면 못 받은 학생이 있다는 의미이므로
필요한 다스는 +1
개이다.
소수점 값이 있는 경우 값이 5 이하이든 5 이상이든 반올림이 되어야 하므로
Math 내장 객체의 ceil 메소드를 사용하면 Math.ceil()
소수점 값이 있는 경우 무조건 올림을 수행한다.
Math.ceil()
, Math.floor()
, Math.round()
Math 내장 객체의 많은 메소드들 중
위 3가지의 메소드는 소수점을 다룰 때 자주 사용된다.
소수점 값이 있다면 무조건 올린다.
function float(num){
return Math.ceil(num); // 4
}
console.log("[ceil] 3.14 : ", float(3.14));
function float(num){
return Math.ceil(num); // 4
}
console.log("[ceil] 3.56 : ", float(3.56));
소수점 값이 있다면 소수점 값을 버린다.
function float(num){
return Math.floor(num); // 3
}
console.log("[floor] 3.14 : ", float(3.14));
function float(num){
return Math.floor(num); // 3
}
console.log("[floor] 3.56 : ", float(3.56));
소수점의 값이 5 이상이면 올림이 되고, 5 이하이면 버린다.
function float(num){
return Math.round(num); // 3
}
console.log("[round] 3.14 : ", float(3.14));
function float(num){
return Math.round(num); // 4
}
console.log("[round] 3.56 : ", float(3.56));