본문 바로가기
코딩일기/JS<자바스크립트>

자바 스크립트 <피자 나눠 먹기 (3)> 프로그래머스

by 2pro.e_pro 2024. 5. 31.
728x90
반응형

이번 아티클에서는 자바 스크립트 <피자 나눠 먹기 (3)> 프로그래머스 문제를 풀어보자.

 

문제는 아래와 같다.

 

이번 문제 에서는 피자를 원하는대로 잘라준다고 한다.

그러나 입출력 예를 보면

 

10명이 7조각으로 자른 피자를 10명이 먹으려면 결국 2판이 필요하게 된다.

그리고 12명이 4조각으로 자른 피자를 한조각 이상씩 먹는다면 3판...

 

원하는 조각으로 잘랐다는 가정이기 때문에 메소드를 디깅하였다.

찾아보니 Math.ceil() 이라는 메소드를 찾았고 이를 활용하여 코드를 구성해보자.

 

function solution(slice, n) {
    var answer = Math.ceil(n/slice);
    
    return answer;
}

구성되는 코드를 보면 간략하겠지만

해당 코드의 구성을 해석하고 이해해야 왜그런지를 알게 된다.

 

우선 Math.ceil() 이라는 메소드는 기존에 소개 했던 parseInt()와는 다른 성격인데.

parseInt()의 경우 소숫점을 없애는 반면 Math.ceil()은 소수점을 올림해준다.

 

우리가 피자를 나눈것을 먹을때 부족하면 한판이 더 필요하기때문에

 

var answer = Math.ceil(n/slice); 이러한 수식을 사용하게 되는것이며

 

이것을 실제 대입해 보자면 피자먹는 사람 n 이 17명이 있고

잘려져 있는 피자 slice 값이 5 라고 했을때 두개를 나누면 3.4 라는 값이 나온다.

결국 3판 하고도 0.4 판이 더 필요하게 된것이기때문에 이럴때는

Math.ceil() 메소드를 통해 4판으로 올림처리해주고

그 결과 값을 반환하게 하는것이다.

 

다른사람들은 어떻게 풀었을까?

function solution(slice, n) {
    let i = 1;
    while(slice*i<n){
        i++
    }
    return i;
}

while 문으로 작성한 코드

 

function solution(slice, n) {
    return n%slice ? parseInt(n/slice)+1 : n/slice
}

삼항 연산자를 통해 깔끔하게 작성한 코드

728x90
반응형

댓글