[알고리즘] 연필 개수

soheeoott·2021년 5월 8일
0

알고리즘

목록 보기
3/9
post-thumbnail

연필 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 학생 모두에게 연필을 나눠 줄 수 있다.

Math.ceil() 내장 객체 사용

function solution(n){
    return Math.ceil(n / 12);
}
console.log(solution(25));

📖 문제 풀이 과정

소수점 값이 있다면 못 받은 학생이 있다는 의미이므로
필요한 다스는 +1개이다.
소수점 값이 있는 경우 값이 5 이하이든 5 이상이든 반올림이 되어야 하므로
Math 내장 객체의 ceil 메소드를 사용하면 Math.ceil()
소수점 값이 있는 경우 무조건 올림을 수행한다.

소수점을 다루는 Math 내장 객체 메소드들

Math.ceil(), Math.floor(), Math.round()

Math 내장 객체의 많은 메소드들 중
위 3가지의 메소드는 소수점을 다룰 때 자주 사용된다.

Math.ceil()

소수점 값이 있다면 무조건 올린다.

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));

Math.floor()

소수점 값이 있다면 소수점 값을 버린다.

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));

Math.round()

소수점의 값이 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));

profile
📚 글쓰는 습관 들이기 📚

0개의 댓글