1 분 소요

문제파악

6, 8, 10 조각으로 이뤄진 피자를 만드는 데 각 15, 20, 25 분이 걸릴 때 합쳤을 때 N 조각의 피자를 만들 때 드는 최소한의 시간을 구해라

IDEA

  1. 세 종류의 피자 모두 조각 당 시간은 2.5분으로 동일하다 ( 6:15 = 8: 20 = 10:25 )

  2. 피자가 모두 짝수 갯수 슬라이스만을 만들기 때문에 홀수 개의 슬라이스는 만들 수 없으며 이 때는 N+1 개 이상의 슬라이스를 가진 피자를 만들게 된다

  3. N = 2n 인 경우 n = 3a_1 + 4a_2 + 5*a_3 로 이뤄지게 된다

    3; a_1 = 1, 4; a_2 =1, 5: a_3=1, 6; a_1=2, 7;a_1=1 a_2=1, 8;a_1=1 a_2=1, 9; a_1=3 ,…

    따라서 6,8,10 을 가지고 6 이상의 모든 짝수를 만들 수 있다.

  4. 위 3번에 의해서 6 이하의 조각은 6 피자를 만드는 시간인 15분이 걸리고 6 조각 이상의 피자들은 3 종류의 피자 조합을 통해서 조각이 남지 않게 딱 떨어지게 만들 수가 있다

    어떤 피자 종류를 써도 조각 당 시간이 같고 남기는 조각이 없기에 최종적인 시간은 다 같다

CODE

#include <stdio.h>

#define MAX(x, y)   ((x) > (y) ? (x) : (y))

int main(){
    int T;
    scanf("%d", &T);

    for(int t=0; t<T; t++){
        ull N;
        scanf("%llu", &N);

        N = MAX(N, 6);
        ull result = (N+1) / 2 * 5;
        
        printf("%llu\n", result);
    }
}

주의 사항

  1. 세 종류 피자 모두 조각 당 시간이 동일하다는 점을 파악해야 한다

  2. 6, 8, 10 이 세가지 수로 모든 짝수를 만들 수 있다는 점을 알 수 있어야 한다

문제 풀 당시에 1은 파악 했지만 2를 파악하지 못하여 최소 공배수를 통해 문제를 접근하여 복잡한 풀이를 만들었다

댓글남기기