문제
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
풀이
class Solution {
fun solution(slice: Int, peoples: Int): Int {
var answer: Int = 1
while((answer*slice)/peoples < 1){
answer++
}
return answer
}
}
처음에 if > if > if 루투를 타는 조건문을 만들었다가 오류가 발생해서
while 문으로 작성했습니다. 다른 사람들의 풀이를 보니 더욱 깔끔한 풀이가 많아서 살짝 부끄럽기도 하네요.. !
문제의 핵심은 n 명의 사람이 최소 한 조각 이상의 피자를 먹어야 한다는 것.
여기서 변수 answer은 피자 판 수 라고 생각하고 초기화 값을 '1' 로 하였습니다.
(당연히 피자를 먹으려면 최소 한 판은 시켜야 합니다.)
공식 : (피자 판 수 x 피자 조각) / 사람수 > 1 이상이어야 성립
만약 몫이 1 미만이라면, 한 사람 당 피자 한 조각씩 먹을 수 없는 상황이기 때문에
피자를 추가 주문 하면 됩니다.
아래 예시를 참고해주세요.
1. slice 5, peoples 2
→ 피자는 한 판(총 5 조각), 사람은 2명 : 통과 (모두 한 조각 이상 먹을 수 있음)
2. slice 3, peoples 7
→ 피자는 한 판(총 3조각), 사람은 7명 : 문제 발생 (무려 4명이나 피자를 못 먹는 사태 발생)
그럼 피자 한판을 더 추가해줍니다.
→ 피자는 두 판(총 6조각), 사람은 7명 : 문제 발생 (한 명이 굶게 생겼습니다)
또 한판을 추가 합니다.
→ 피자는 세 판(총 9조각), 사람은 7명 : 통과 (모두 한 조각씩 먹을 수 있게되었습니다.)
저는 이런식으로 문제 푸는 방법을 생각 했고, 피자 판 수 를 늘리는 거에 초점을 맞췄습니다.
그래서 탄생한게 위 풀이! 너무 복잡한가요? ㅎㅎ,,