Algorithm : 연산법
수학과 컴퓨터과학에서 사용되는, 문제 해결 방법을 정의한 '일련의 단계적 절차'이자 어떠한 문제를 해결하기 위한 '동작들의 모임'이다. 계산을 실행하기 위한 단계적 규칙과 절차를 의미하기도 한다.
"알고리즘은 코딩의 효율성과 확장성을 결정짓는 핵심 요소"
주제 : 피자 나눠먹기 (3)
레벨 : ★☆☆☆☆
문제
피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 코드를 완성해라.
//Base Code
class Solution {
public int solution(int slice, int n) {
int answer = 0;
return answer;
}
}
최소한의 피자 판수를 구하는 문제이다.
n명의 사람들이 최소한 한 조각씩 피자를 먹으려면 몇 판을 시켜야하는지 구하면 된다.
하지만 값이 딱 나누어 떨이지지 않으니까 최소한의 피자한수니까 소숫점에서 올리면 된다.
예를들어 한 판에 6조각인데 사람이 14명이라 해보자.
14 / 6 = 2.33 소숫점이니까 3판을 시키면 된다.
한번더 예를 들어 한판에 8조각인데 사람이 20명이라 해보자.
20 / 8 = 2.5 소수점이니까 3판을 시키면 된다.
문제는 소숫점을 올리는 코드이다. 검색을 해보니
ceil 연산을 사용하면 된다고 한다.
class Solution {
public int solution(int slice, int n) {
return (int) Math.ceil((double) n / slice);
}
}