Coding History

2024. 06. 25 문제풀이

BlackBirdIT 2024. 6. 25. 20:55

머쓱이네 피자가게 문제

//머쓱이네 피자가게는 피자를 일곱 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 주어질 때,
//모든 사람이 피자를 한 조각 이상 먹기 위해 필요한 피자의 수를 return 하는 solution 함수를 완성해보세요.
class Solution {
    public int solution(int n) {
        int pizzaPiece = 7; //피자 조각 수 저장
        int pizzaCount = 0; //피자 한판을 세기 위한 변수
        for (int i = 1; i <= n; i+=pizzaPiece) { //받은 사람수를 피자 조각 수만큼 더하면서 반복
            pizzaCount++; //몇판인지 세기.
        }
        return pizzaCount;
    }
}

확실히 공부를 계속 하니까 좀 빨리 수월하게 풀리는 것 같다. 문제가 쉬웠던 거 일수도..

다음문제는 조금 헤매고 있다.

같은 피자가게 문제인데 일단 코드로 보자.

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

class Solution {
    public int solution(int n) {
        int pizzaPiece = 6;
        int pizzaCount = 0;

        for (int i = 1; i <= n*6; i++) {
            if (pizzaPiece % n == 0){
                pizzaCount++;
            }
        }

//        for (int i = 1; i <= 100; ++i) {
//            pizzaCount++;
//        }
        return pizzaCount;
    }
}

이런 식으로 구현하다가 문든 든 생각이 최소공배수랑 최대공약수를 활용해야된다는 것을 떠올리고 검색을 하기 시작했다. 저번에 다른 문제 풀면서 썼던 적이 분명있는데 잘 기억이 안난다.

class Solution {
    public static int gcd(int a, int b) { //최대공약수 함수
        while (b != 0) {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;

    }

    public static int lcm(int a, int b) { //최소공배수 함수
        return a * b / gcd(a, b);
    }

    public int solution(int n) {
        int pizzaPiece = 6;
        int lcm = lcm(pizzaPiece, n); // 사람 수와 피자 조각 수의 최소공배수 구하는 메서드 실핼

        return lcm / pizzaPiece; // 필요한 피자 판 수는 최소공배수를 한 판의 조각 수로 나눈 값
    }
}

구글링으로 찾은 코드를 넣고 밑에서 공식에 따라 값을 구하려고 코드를 작성하니까 테스트 케이스를 모두 통과했다. 최소공배수와 최대공약수를 구하는 코드를 내가 직접 구현한게 아니라 정답이 있는거라 아마 프로그래머스도 통과할 것 같다.

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

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

        return answer;
    }
}

풀이를 보는데 무한루프를 사용한 사람도 있었다. 무한루프 생각은 해봤는데 저렇게 활용할 수도 있구나.. 하나 배워간다.