middlemoon
[입문]자바 - 피자 나눠 먹기(1). 본문

답안 )
class Solution{
public int solution(int n){
int answer = 0;
int pizza = 7;
answer = ( pizza + n - 1 ) / pizza;
System.out.println(answer);
return answer;
}
}
과정 )
처음엔 반복문으로 접근해야하나? 라고 생각했다. 하지만 이 문제는
전체 사람 수 n을 7로 나눴을 때 몇 판이 필요한가? 만 구하면 끝나는 문제이다..
즉, 한 번의 나눗셈(그리고 올림 처리)만으로 답을 알 수 있다.
근데 여기서는 n명이 있든, 1000명이 있든, 계산 한 번이면 답이 딱 나오니까 반복문이 필요 없는 것.
우리가 원하는 건 첫번 째,
n / pizza
를 계산할 때 나머지가 있으면 무조건 +1 판이 더 필요하다는 사실은 맞다.
예를들어, n = 7, pizza = 7 -> 1판 /
n = 8, pizza = 7 -> 2판 (1.xx -> 올림)
n = 15, pizza = 7 -> 3판 (2.xx -> 올림)
즉, 실수 나눗셈 결과를 올림한 값을 정수로 얻어야하는 것이 포인트이다.
물론 실수로 계산하여 Math.ceil(n / (double)pizza) 도 가능하지만, 정수나눗셈이 가능하다.
(n + pizza - 1) / pizza
- n / pizza → 피자를 딱 나눠떨어질 때만 맞음
- (n + pizza - 1) / pizza → 항상 마지막 남은 사람들까지 먹을 수 있게 여분을 미리 더하는 방식
즉, 나머지가 생기면 한 칸 밀려서(=한 판 더 올라가서) 자동으로 올림이 된다.
참고 ) Math.ceil 버전
class Solution {
public int solution(int n) {
int pizza = 7;
int answer = (int)Math.ceil((double)n / pizza);
return answer;
}
}
- (double)n / pizza → 실수 나눗셈 (예: 10 / 7 = 1.428...)
- Math.ceil(...) → 소수점 올림 (1.428... → 2.0)
- (int) 캐스팅 → 다시 정수로 변환
'Algorithm > 프로그래머스 Java 입문' 카테고리의 다른 글
| [입문]자바 - 최댓값 만들기(1). (4) | 2025.08.26 |
|---|---|
| [입문]자바 - 세균증식. (0) | 2025.08.25 |
| [입문]자바 - 뒤집힌 문자열. (0) | 2025.08.23 |
| [입문]자바 - 짝수 홀수 개수 (0) | 2025.08.23 |
| [입문]자바 - 배열 뒤집기. (0) | 2025.08.21 |
Comments