// ver.1 느린 버전
#include <stdio.h>
int v[1000004];

// 입력: x : 약수를 구할 정수
// 출력 : count : x의 약수의 개수
int factor(int x)
{
    // count = 약수의 개수
    int count = 0;
    
    // i를 1부터 x까지 돌려 x의 약수를 모두 구해준다.
    for (int i = 1; i <= x; i++)
    {
        // x 나누기 i를 헀는데 나머지가 0이면 약수이므로
        // count에 1을 더해준다.
        if (x % i == 0) count++;
    }
    // 약수의 개수를 매인 함수로 전달.
    return count;
}

int main()
{
    int m, n;

    scanf("%d %d", &n, &m);
    for (int i = 0; i < n; i++)
        scanf("%d", &v[i]);

    for (int i = 0; i < n; i++)
    {
        // factor 함수에서 나온 약수의 개수와 m 나누기 v[i]를 한 배수 값을 더한 후 -1 해준다.
        printf("%d\n", (factor(v[i]) + m / v[i]) - 1);
    }
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pD0  (2) 2023.02.06
2021 SFPC pC1 ver.2  (0) 2023.02.05
2021 SFPC pC0  (6) 2023.02.05
2021 SFPC pB1 ver.1  (0) 2023.02.04
2021 SFPC pA0  (0) 2023.02.04
2021 SFPC pB0  (0) 2023.02.04
// ver.1 가장 비효율적 코드(for문)
#include <stdio.h>

int main()
{
	// n = 한라봉 무게, ans = 박스의 개수 저장
	int n, ans = -1; 

	scanf("%d", &n);

	// t = 한라봉의 무게를 저장시켜놓은 변수인데 이 변수를 기준으로 아래 for 문이 돌아간다.
	int t = n; 

	// i = 10kg짜리 박스를 사용하는 개수를 저장한다.
	for (int i = 0; i <= t; i++) 
	{
		// 만약 10kg 박스만으로 한라봉을 포장할 수 없다면 for문 나가기
		if (i * 10 > t) break;

		// j = 5kg짜리 박스를 사용하는 개수를 저장한다.
		for (int j = 0; j <= t; j++) 
		{
			// 만약 10kg 박스와 5kg 박스만으로 한라봉을 포장할 수 없다면 for문 나가기
			if (i * 10 + j * 5 > t) break;

			// k = 3kg짜리 박스를 사용하는 개수를 저장한다.
			for (int k = 0; k <= t; k++)
			{
				// 만약 10kg, 5kg, 3kg 박스만으로 한라봉을 포장할 수 없다면 for문 나가기.
				int a = i * 10 + j * 5 + k * 3;
				if (a > t) break;

				// b = 남은 한라봉 무게를 저장.
				int b = t - a;
				int l = b;

				// 만약 ans에 한 번도 값이 들어간 적이 없거나 ans이 모든 상자 사용값보다 크다면 ans 바꾸기
				if (ans == -1 || (ans > i + j + k + l))
					ans = i + j + k + l;
			}
		}
	}

	// 박스의 개수 출력
	printf("%d", ans);
}

 

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pC1 ver.2  (0) 2023.02.05
2021 SFPC pC0  (6) 2023.02.05
2021 SFPC pC1 ver.1  (0) 2023.02.05
2021 SFPC pA0  (0) 2023.02.04
2021 SFPC pB0  (0) 2023.02.04
2021 SFPC pB1 ver.3  (0) 2023.02.04

 

pA0 풀이과정

#include <stdio.h>

int main()
{
    printf("10 6");
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pC0  (6) 2023.02.05
2021 SFPC pC1 ver.1  (0) 2023.02.05
2021 SFPC pB1 ver.1  (0) 2023.02.04
2021 SFPC pB0  (0) 2023.02.04
2021 SFPC pB1 ver.3  (0) 2023.02.04
2021 SFPC pA1  (0) 2023.02.03

pB0 풀이과정

#include <stdio.h>

int main()
{
  	// 상자의 개수 출력
  	printf("3");
}

 

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pC0  (6) 2023.02.05
2021 SFPC pC1 ver.1  (0) 2023.02.05
2021 SFPC pB1 ver.1  (0) 2023.02.04
2021 SFPC pA0  (0) 2023.02.04
2021 SFPC pB1 ver.3  (0) 2023.02.04
2021 SFPC pA1  (0) 2023.02.03
// ver.3 가장 효율적인 코드(배열)
#include <stdio.h>

int x[4] = { 10, 5, 3, 1 }; // 배열 x에 모든 박스의 크기를 저장

int main()
{
	int n; // n = 한라봉 무게
	int ans = 0; // ans = 상자의 개수 저장

	scanf("%d", &n);

	// t라는 변수는 한라봉의 무게를 저장시켜놓은 변수인데 이 변수를 기준으로 아래 for 문이 돌아간다.
	int t = n; 
	for (int i = 0; i < 4; i++)
	{
		// 만약 박스의 크기(x[i])가 한라봉의 무게를 뛰어넘는다면 다음 for 문으로 넘어가기
		if (x[i] > t) 
			// 다음 for 문으로 넘어가기
			continue; 
		
		// ans에 한라봉의 무게(t) / 박스의 무게(x[i])를 더해 박스를 얼마나 써야 할지 구해준다.
		ans += t / x[i];

		// t에 사용된 i번째 상자의 개수만큼 빼준다.
		t -= (t / x[i]) * x[i]; 
	}

	// 상자의 개수 출력
	printf("%d", ans);
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pC0  (6) 2023.02.05
2021 SFPC pC1 ver.1  (0) 2023.02.05
2021 SFPC pB1 ver.1  (0) 2023.02.04
2021 SFPC pA0  (0) 2023.02.04
2021 SFPC pB0  (0) 2023.02.04
2021 SFPC pA1  (0) 2023.02.03
#include <stdio.h>


int main()
{
    // n은 주차 공간의 수, a는 첫번째 날에 주차된 차량의 수, b는 두번째 날에 주차된 차량의 수
    int n, a, b; 
    
    // A 배열은 첫째 날 사용된 주차 공간의 번호들을 저장해놓은 배열
    // B 배열은 둘째 날 사용된 주차 공간의 번호들을 저장해놓은 배열
    int A[100], B[100];

    scanf("%d %d %d", &n, &a, &b);

    /// A, B 배열에 1부터 a, b까지 주차 공간의 번호 저장
    for (int i = 1; i <= a; i++)
        scanf("%d", &A[i]);
    for (int i = 1; i <= b; i++)
        scanf("%d", &B[i]);

    // count1에 모두 사용된 주차 공간을 저장
    int count1 = 0;
    for (int k = 1; k <= n; k++) // 1부터 n까지 돌려 두 배열에 같은 주차 번호가 있는지 확인하는 for문
    {
        // k_count를 이용해 count1를 좌우
        int k_count = 0;
        // 1부터 a까지 돌려 배열 A에 k가 있는지 확인하고
        // 있으면 k_count에 1을 추가
        for (int i = 1; i <= a; i++) 
            if (A[i] == k) k_count++;

        // 1부터 b까지 돌려 배열 B에 k가 있는지 확인하고
        // 있으면 k_count에 1을 추가
        for (int j = 1; j <= b; j++)
            if (B[j] == k) k_count++;

        // k_count가 2라는 것은 두 배열에 같은 주차 번호가 있다는 것이므로 count1에 1을 추가
        if (k_count == 2) count1++; 
    }
    
    // count2에 모두 사용되지 않은 주차 공간을 저장
    int count2 = 0;

    // 1부터 n까지 돌려 두 배열에 같은 주차 번호가 없는지 확인하는 for문
    for (int k = 1; k <= n; k++) 
    {
        // k_count를 이용해 count2를 좌우
        int k_count = 0;

        // 1부터 a까지 돌려 배열 A에 k가 있는지 확인하고
        // 있으면 k_count에 1을 추가
        for (int i = 1; i <= a; i++)
            if (A[i] == k) k_count++;

        // 1부터 b까지 돌려 배열 B에 k가 있는지 확인하고
        // 있으면 k_count에 1을 추가
        for (int j = 1; j <= b; j++)
            if (B[j] == k) k_count++;

        // k_count가 0이라는건 두 배열에 공통적으로 없는 주차 번호가 있다는 뜻이므로
        // count2에 1을 더해준다.
        if (k_count == 0) count2++;
    }
    // 순서대로 출력
    printf("%d %d", count2, count1);
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC pC0  (6) 2023.02.05
2021 SFPC pC1 ver.1  (0) 2023.02.05
2021 SFPC pB1 ver.1  (0) 2023.02.04
2021 SFPC pA0  (0) 2023.02.04
2021 SFPC pB0  (0) 2023.02.04
2021 SFPC pB1 ver.3  (0) 2023.02.04

+ Recent posts