알고리즘_JAVA_08

Kingyj·2025년 3월 31일
post-thumbnail

🐤 Before

Algorithm : 연산법

수학과 컴퓨터과학에서 사용되는, 문제 해결 방법을 정의한 '일련의 단계적 절차'이자 어떠한 문제를 해결하기 위한 '동작들의 모임'이다. 계산을 실행하기 위한 단계적 규칙과 절차를 의미하기도 한다.

[ 즉, 어떤 문제를 해결하기 위한 명확한 정차와 규칙의 집합이다. ]

"알고리즘은 코딩의 효율성과 확장성을 결정짓는 핵심 요소"


🐤 Info

주제 : 피자 나눠먹기 (3)
레벨 : ★☆☆☆☆

문제
피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 코드를 완성해라.

//Base Code
class Solution {
    public int solution(int slice, int n) {
        int answer = 0;
        return answer;
    }
}

🐤 Think

최소한의 피자 판수를 구하는 문제이다.
n명의 사람들이 최소한 한 조각씩 피자를 먹으려면 몇 판을 시켜야하는지 구하면 된다.

하지만 값이 딱 나누어 떨이지지 않으니까 최소한의 피자한수니까 소숫점에서 올리면 된다.

예를들어 한 판에 6조각인데 사람이 14명이라 해보자.

14 / 6 = 2.33 소숫점이니까 3판을 시키면 된다.

한번더 예를 들어 한판에 8조각인데 사람이 20명이라 해보자.

20 / 8 = 2.5 소수점이니까 3판을 시키면 된다.

문제는 소숫점을 올리는 코드이다. 검색을 해보니
ceil 연산을 사용하면 된다고 한다.


🐤 Final Code

class Solution {
    public int solution(int slice, int n) {
        return (int) Math.ceil((double) n / slice);
    }
}

0개의 댓글