1️⃣ 나머지 구하기

 

문제 설명

머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때, 모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.

 

제한사항

  • 1 < n ≤ 100

입출력 예

n result
7 1
1 1
15 3

 

  • 7명이 최소 한 조각씩 먹기 위해서 최소 1판이 필요합니다.
  • 1명은 최소 한 조각을 먹기 위해 1판이 필요합니다.
  • 15명이 최소 한 조각씩 먹기 위해서 최소 3판이 필요합니다.


 

💻 나의 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        answer = (n%7==0) ? n/7 : (n/7)+1;
        return answer;
    }
}

 

한 판에 7조각이니까..n이 7보다 작거나 같다면 1판이고, 7보다 크고 14보다 작거나 같다면 2판이네? > 7로 나눴을 때 나머지가 0이면 참, 나머지가 0이 아니면 거짓으로 한판이 더 필요하네

이런 식으로 생각하여 삼항 연산자를 사용했습니다.

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int n) {
        return (n + 6) / 7;
    }
}

 

 


 

 

2️⃣ 피자 나눠 먹기 (2)

 

문제 설명

머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 < n ≤ 100

입출력 예

n result
6 1
10 5
4 2

 


 

💻 나의 풀이

class Solution {
    public int solution(int n) {
        int answer = 0;
        int gcd = 0;
        
        for (int i=1; i<=n; i++){
            if(6%i==0 && n%i==0){
                gcd=i;
            }
        }
        answer = n/gcd;
        return answer;
    }
}

 

피자 한 판이 6조각

사람 수 n

한 사람이 먹는 피자 조각 i

6과 n의 최대공약수를 먼저 구합니다.

그 다음, 사람 수 n을 최대공약수인 GCD로 나누어주면 피자가 몇 판이어야 하는지 알 수 있습니다.

 

⭐ 유클리드 호제법 (최대공약수 구하기)
두 수 a, b의 최대공약수(GCD)는 bdhk a%b의 최대공약수(GCD)와 같다.
public static int gcd(int a, int b) {
    while (b != 0) {
        int r = a % b;
        a = b;
        b = r;
    }
    return a;
}​
최소 공배수 (LCM) 구하기
두 수의 최대 공약수를 먼저 구한 후, 두 수의 곱셈을 최대 공약수로 나누어준다.
public int lcm(int a, int b) {
    int gcd = gcd(a, b);
    return (a * b) / gcd;
}

 

 

🔎 다른 사람의 풀이

class Solution {
    public int GCD(int num1, int num2) {
        if (num1 % num2 == 0)
            return num2;
        return GCD(num2, num1 % num2);
    }

    public int LCM(int num1, int num2) {
        return num1 * num2 / GCD(num1, num2);
    }

    public int solution(int n) {
        return LCM(n, 6) / 6;
    }
}

 

class Solution {
    public int solution(int n) {
        int answer = 1;

        while(true){
            if(6*answer%n==0) break;
            answer++;
        }

        return answer;
    }
}

 

 


 

3️⃣ 피자 나눠 먹기 (3)

 

문제 설명

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

 

제한사항

  • 2 ≤ slice ≤ 10
  • 1 ≤ n ≤ 100

입출력 예

slice n result
7 10 2
4 12 3

 

 


 

💻 나의 풀이

class Solution {
    public int solution(int slice, int n) {
        int answer = 0;
        
        if(n%slice != 0){
            answer = n/slice +1;
        } else {
            answer = n/slice;
        }
        return answer;
    }
}

 

n을 slice로 나누었을 때 나머지가 0이 아니면 => 피자는 +1 해야합니다.

 

class Solution {
	public in solution(int slice, int n){
    	int answer = 0;
        if(2<=slice && slice<=10){
        	answer=(n%slice==0) ? (n/slice) : (n/slice)+1;
            } 
         return answer;
      }
 }

 

삼항연산자로 바꾸어 본 코드 입니다.

 

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int slice, int n) {
        return n % slice > 0 ? n/slice+1 : n/slice;
    }
}

 

 

 


 

 

4️⃣ 배열의 평균값

 

문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 0 ≤ numbers의 원소 ≤ 1,000
  • 1 ≤ numbers의 길이 ≤ 100
  • 정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.

입출력 예

numbers result
[1,2,3,4,5,6,7,8,9,10] 5.5
[89,90,91,92,93,94,95,96,97,98,99] 94.0

 


 

💻 나의 풀이

class Solution {
    public double solution(int[] numbers) {
        double answer = 0;
        
        for(int i=0; i<numbers.length; i++){   // 배열의 길이만큼 반복
            answer += numbers[i];  // 배열의 i번째 값을 차례차례 더한다.
        }
        return answer/numbers.length;  // 합쳐진 값을 배열의 길이로 나눈다.
    }
}

 

배열의 모든 원소의 합을 구해서 배열의 길이로 나눠주면 배열 원소들의 평균이 나온다.

 

 

🔎 다른 사람의 풀이

import java.util.Arrays;

class Solution {
    public double solution(int[] numbers) {
        return Arrays.stream(numbers).average().orElse(0);
    }
}
xoo | 수진