// 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()
{
	int n; // n = 염기의 개수
	char ans[100000]; // DNA의 염기서열

	scanf("%d", &n);
	scanf("%s", ans);

	for (int i = 0; i < n; i++) // i를 0부터 n - 1까지 돌려 배열에 있는 모든 값을 비교해본다.
	{
		if (ans[i] == 'A') printf("U"); // 만약 ans[i]가 A(아데닌)이라면 U(우라실)을 출력한다.
		else if (ans[i] == 'T') printf("A"); // 만약 ans[i]가 T(티민)이라면 A(아데닌)을 출력한다.
		else if (ans[i] == 'C') printf("G"); // 만약 ans[i]가 C(사이토신)이라면 G(구아닌)을 출력한다.
		else printf("C"); // 위에 있는 모든 사항이 맞지 않다면 G(구아닌)이라는 뜻이므로 C(사니토신)을 출력한다.
	}
}

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

2022 SFPC B0  (0) 2023.02.17
2022 SFPC A0  (0) 2023.02.17
2022 SFPC B1  (0) 2023.02.16
2022 SFPC pE1 ver.2  (0) 2023.02.02
2022 SFPC pE1 ver.1  (0) 2023.02.02
2022 SFPC pD1 ver.2  (0) 2023.02.01
#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
// ver.1 for문 X
#include <stdio.h>

int main()
{
    int n, m; // n = 처음 가지고 있는 코인, m = 사용된 코인
    int ans[5] = { 0 }; // 500코인부터 10코인까지 순서대로 특산물 개수를 저장할 배열
    scanf("%d", &n);
    scanf("%d", &m);

    int t = n - m; // t = 보유 코인 수

    // ans[1]은 영덕 대게(500코인)를 교환할 수 있는 개수를 저장하는 곳이니
    // t / 500은 전체 코인수에 500을 나눠서 나온 몫이 개수이므로
    // ans[1]에 t / 500을 저장한다.
    ans[1] = t / 500; 
    
    // 영덕 대게를 샀으니 산만큼 보유 코인을 깎아준다.
    t -= 500 * ans[1];

    // ans[2]은 김천 포도(100코인)를 교환할 수 있는 개수를 저장하는 곳이니
    // t / 100은 전체 코인수에 100을 나눠서 나온 몫이 개수이므로
    // ans[2]에 t / 100을 저장한다.
    ans[2] = t / 100;
    
    // 김천 포도를 샀으니 산만큼 보유 코인을 깎아준다.
    t -= 100 * ans[2];

    // ans[3]은 의성 마늘(50코인)를 교환할 수 있는 개수를 저장하는 곳이니
    // t / 50은 전체 코인수에 50을 나눠서 나온 몫이 개수이므로
    // ans[3]에 t / 50을 저장한다.
    ans[3] = t / 50;

    // 의성 마늘을 샀으니 산만큼 보유 코인을 깎아준다.
    t -= 50 * ans[3];

    // ans[4]은 상주 곶감(10코인)를 교환할 수 있는 개수를 저장하는 곳이니
    // t / 10은 전체 코인수에 10을 나눠서 나온 몫이 개수이므로
    // ans[4]에 t / 10을 저장한다.
    ans[4] = t / 10;

    // 상주 곶감을 샀으니 산만큼 보유 코인을 깎아준다.
    t -= 10 * ans[4];

    // 변수 number에 순서대로 구한 값을 저장해준 후 출력한다.
    int number = 0;
    for (int i = 1; i <= 4; i++) number += ans[i];
    printf("%d", number);
}

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

2022 SFPC B1  (0) 2023.02.16
2022 SFPC A1  (0) 2023.02.03
2022 SFPC pE1 ver.2  (0) 2023.02.02
2022 SFPC pD1 ver.2  (0) 2023.02.01
2022 SFPC pD1 ver. 1  (0) 2023.02.01
2022 SFPC pC1,2  (1) 2023.01.31
// ver.2 속도가 빠름(2중 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 = -1;

    // i는 d1을 사용한 횟수다.
    for (int i = 0; i <= t; i++) 
    {
        // j는 d2를 사용한 횟수다.
        for (int j = 0; j <= t; j++) 
        {
            int a = i * d1 + j * d2;
            // 만약 a가 k보다 크다면 빠져나가기 
            if (a > t) break;
            // b에는 현재 d3를 이용해 잡아야 하는 물고기수 저장
            int b = t - a;
            // c에는 b에 d3를 나눈 나머지를 저장한다.
            int c = b % d3;
            // 만약 c가 0이라면 계산할 수 있으므로 계산을 한다.
            if (c == 0)
            {
                int k = b / d3; // k에 잡아야 하는 물고기를 d3를 이용해 잡은 횟수 저장
                // 만약 ans가 처음 그대로인 -1이면 잡을 수 없다는 것이고
                //  i + j + k보다 크다면 최솟값이 생겼다는것이므로 변경
                if (ans == -1 || (ans > i + j + k))
                    ans = i + j + k;
            }
        }
    }
    printf("%d", ans);
}

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

2022 SFPC B1  (0) 2023.02.16
2022 SFPC A1  (0) 2023.02.03
2022 SFPC pE1 ver.2  (0) 2023.02.02
2022 SFPC pE1 ver.1  (0) 2023.02.02
2022 SFPC pD1 ver. 1  (0) 2023.02.01
2022 SFPC pC1,2  (1) 2023.01.31
// 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);
}

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

2022 SFPC B1  (0) 2023.02.16
2022 SFPC A1  (0) 2023.02.03
2022 SFPC pE1 ver.2  (0) 2023.02.02
2022 SFPC pE1 ver.1  (0) 2023.02.02
2022 SFPC pD1 ver.2  (0) 2023.02.01
2022 SFPC pC1,2  (1) 2023.01.31

+ Recent posts