프로그래머스 - 피자 나눠 먹기(3)

김민아·2025년 4월 2일

코딩테스트

목록 보기
3/7
post-thumbnail

💡문제 설명
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.


예를들어

  • 10명이 7조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 2판을 시켜야 한다.

  • 12명이 4조각으로 자른 피자를 한 조각 이상씩 먹으려면 최소 3판을 시켜야 한다.


//제출 코드
class Solution {
    public int solution(int slice, int n) {
        int answer = 0;
        
        double divisionResult = (double)n/(double)slice;
        answer = (int)Math.ceil(divisionResult);
        
        return answer;
    }
}

🔨개선할 부분

double divisionResult = (double)n/(double)slice; //기존 코드 

double divisionResult = (double)n/slice; //불필요한 형변환 제거한 코드.

자바에서 정수 나눗셈은 몫만 반환한다. 딱 나누어 떨어지지 않고 소수점이 있어도 무시해버리기 때문에 소수점을 얻기 위해서는 정수/정수 가 아니라 실수/실수로 형변환을 해주어야한다. n과 slice 둘 다 형변환을 하였지만 둘중 하나만 실수로 바꾸어주어도 자동으로 실수연산이 된다.

+) float이 아닌 double을 쓴 이유

double형이 더 쓰기 편하고 더 정밀하기 때문이다. float을 사용하려면 (float)을 붙이거나 f를 붙여야한다.
하지만 double은 바로 쓸 수 있다.

float a = 3.14; // 오류 발생! (double을 float에 넣으려면 3.14f로 써야 함)
double b = 3.14; // 정상 작동

그리고 double형은 소숫점 이하 14~15자리, float은 6~7자리를 계산하므로 더 정밀하다.

profile
천천이 꾸준히

0개의 댓글