SFPC/2022

2022 SFPC pD1 ver. 1

열정아빠와아들 2023. 2. 1. 20:45
// ver. 1 속도가 느림(3중 for문)
#include <stdio.h>

int main()
{
    int n, m;
    int d1, d2, d3;

    scanf("%d %d", &n, &m);
    scanf("%d %d %d", &d1, &d2, &d3);
    int t = n - m; // n - m이 (독도새우 수) - (보호해야 하는 수)이므로 n - m을 해준다.
    int ans = 1e8; // 1e8 = 100000000

    // i는 d1을 사용한 횟수다.
    for (int i = 0; i <= t; i++) 
    {
        // j는 d2를 사용한 횟수다.
        for (int j = 0; j <= t; j++) 
        {
            // k는 d3를 사용한 횟수다.
            for (int k = 0; k <= t; k++) 
            {
                // x에 d1, d2, d3를 이용해 잡은 새우 수를 모두 더해준다.
                int x = i * d1 + j * d2 + k * d3;
                // x가 t와 같다는것은 잡아야 하는 새우 수를 충족했다는 뜻
                if (x == t) 
                    // 만약 d1,d2,d3를 사용한 횟수인 i,j,k가 ans보다 작다는것은 최솟값이 나왔다는 것이므로 바꿔준다.
                    if (i + j + k < ans) ans = i + j + k; 
            }
        }
    }
    // 만약 ans가 1e8라는건 모든 새우를 못잡는것이므로 -1을 출력한다.
    if (ans == 1e8) printf("-1"); 
    else printf("%d", ans);
}