(java) 프로그래머스 코딩테스트 - 피자 나눠 먹기 (1~3)

navelop·2023년 9월 22일
0

TIL(CODE)

목록 보기
8/20
  1. 피자 한판에 7조각. 피자 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
(1)
class Solution {
    public int solution(int n) { 
        int answer = n / 7;
        if (n % 7 != 0) {
            answer++; // 나머지 조각이 있는 경우 추가 판 주문
        }
        return answer;
    }
}
(2) 삼항 연산자 사용 답안
_**조건?: 거짓;**_
class Solution {
    public int solution(int n) { 
// 7의 배수일 때 : 7로 나눈 값 만큼의 피자 필요
// 7의 배수가 아닐 때 : 7로 나눈 값 + 1
    int answer = 0;
        answer = (n % 7 == 0) ? n/7 : n/7 + 1;
        
        return answer;
    }
}
  • int(정수)이므로 소수점 버림
  • 7명 이하일 때 0.X가 나오므로 결과는 한판

  1. 6조각으로 잘라주는 피자, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
class Solution { 
    /* (피자 여섯조각) n명이 주문한 피자를 남기지 않고
    모두 같은 수의 피자 조각을 먹어야 한다면
    최소 몇판을 시켜야 하는지 반환 */
    public int solution(int n) { // n = 피자 나눠 먹을 사람의 수
        int answer = 0;

        for(int i = 1; i<=n; i++){ // i = 피자 수
            if(i * 6 % n == 0){
                answer = i;
                break; //최소한의 피자 수를 찾았으면 break
            }
        }

        return answer; // 저장 값 반환
    }
}
최소 피자수를 구하는 것이므로 forbreak 사용
  • 최소 한판이니까 i = 1 부터 for문 돌리기

  1. n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.
(1)
class Solution {
    // 피자 한판을 2조각~10조각까지 원하는 수로 잘라준다
    // n명의 사람이 최소 한 조각 이상 먹으려면 최소 몇판의 피자를 시켜야 하는지
    public int solution(int slice, int n) {
        int answer = 0;

        // Math.ceil 소수점 올림 함수 3 / 2 = 1.5 -> 2
        // double 형변환 후 나눈 결과를 올림함수 사용
        answer = (int) Math.ceil((double) n/slice);

        return answer;
    }
}
  • Math.ceil() 반올림 함수
  • double 형변환 -> 반올림 -> int 값
(2) 삼항연산자 사용 답안
class Solution {
    public int solution(int slice, int n) {
        return n % slice > 0 ? n/slice+1 : n/slice;
    }
}
  • 사람 수가 피자 조각의 수보다 많으면 +1

0개의 댓글