💡문제 설명
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 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 둘 다 형변환을 하였지만 둘중 하나만 실수로 바꾸어주어도 자동으로 실수연산이 된다.
double형이 더 쓰기 편하고 더 정밀하기 때문이다. float을 사용하려면 (float)을 붙이거나 f를 붙여야한다.
하지만 double은 바로 쓸 수 있다.
float a = 3.14; // 오류 발생! (double을 float에 넣으려면 3.14f로 써야 함)
double b = 3.14; // 정상 작동
그리고 double형은 소숫점 이하 14~15자리, float은 6~7자리를 계산하므로 더 정밀하다.