A0 설명

#include <stdio.h>

int main()
{
	printf("UAGCCGAU");
}

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

2022 SFPC D0  (0) 2023.02.18
2022 SFPC C0  (0) 2023.02.17
2022 SFPC B0  (0) 2023.02.17
2022 SFPC B1  (0) 2023.02.16
2022 SFPC A1  (0) 2023.02.03
2022 SFPC pE1 ver.2  (0) 2023.02.02
#include <iostream>

// 입력 : 시간 h, 분 m, 기준값 d
// 출력 : 현재 시간대의 각도가 주어진 사잇각(d)와 같다면 1, 아니면 0
int f (int h, int m, int d) // h = 3, m = 0
{
    // t = h시와 m분을 분으로 환산 // t = 180
    int t = h * 60 + m;

    // t가 홀수면 시침의 회전수에 소수점이 붙기 떄문에 오답이 나오게 된다.
    if (t % 2 == 1)
        return 0;

    // x = 시침이 몇도 도는지 저장(t / 2는 0.5를 분수로 바꾼 것)
    // y = 분침이 몇도 도는지 저장
    // z = x - y의 절댓값 저장
    int x = (t / 2) % 360;
    int y = (t * 6) % 360; 
    int z = abs(x - y);

    // z가 180보다 큰것은 주어진 사잇각의 크기를 초과하므로
    // 360에 z를 뺸 값을 z에 저장
    if (z > 180)
        z = 360 - z;

    if (z == d)
        // 현재 시간의 사잇각이 주어진 사잇각과 
        // 같은 것이므로 1 반환
        return 1;
    else
        // 현재 시간의 사잇각이 주어진 사잇각과 
        // 같지 않은것이므로 0 반환
        return 0;
}

int main()
{
    // d = 사잇각
    /// h, m = 시간과 분
    // cnt = 개수
    int d, h, m, cnt = 0;

    scanf("%d", &d);
    
    // 시간은 0시부터 11시까지 있으니
    // h를 0부터 11까지 돌린다.
    for (h = 0; h < 12; h++)
    {
        // 분은 0분부터 59분까지 있으니
        // m을 0부터 59까지 돌린다.
        for (m = 0; m < 60; m++)
        {
            // f함수에서 참이 나왔다는건 d와 같은 각이라는 뜻이므로
            // cnt를 1 올려준다.
            if (f(h, m, d) == 1) cnt++;
        }
    }
    
    // d와 사잇각이 같은 시각의 개수 출력
    printf("%d\n", cnt);
    
    // 시간은 0시부터 11시까지 있으니
    // h를 0부터 11까지 돌린다.
    for (h = 0; h < 12; h++)
    {
        // 분은 0분부터 59분까지 있으니
       // m을 0부터 59까지 돌린다.
        for (m = 0; m < 60; m++)
        {
            // f함수에서 참이 나왔다는건 d와 같은 각이라는 뜻이므로
            // 시각을 출력해준다.(%02d = 숫자 2개 고정적으로 출력, 한 자리 수는 앞에 0 추가 출력
            // 예:출력값이 8이면 08이 출력된다.)
            if (f(h, m, d) == 1) printf("%02d:%02d\n", h, m);
        }
    }
}

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

2022 SFPC C0  (0) 2023.02.17
2022 SFPC B0  (0) 2023.02.17
2022 SFPC A0  (0) 2023.02.17
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
// ver.2 효율적 코드(함수)
#include <stdio.h>

// 한라봉의 총 무게
int x;

// 입력 :  상자의 무게
// 출력 :  상자를 사용한 횟수
int whil(int N)
{
	// 상자를 사용한 개수
	int r = 0;
	// 한라봉의 무게가 상자의 작을 때 까지 반복
	while (x >= N)
	{
		// 한라봉의 무게에서 상자의 무게를 뺴어
		// 상자에 한라봉을 담았다는걸 표현해준다.
		x -= N;

		// 사용한 상자 개수를 1 증가시켜준다.
		r++;
	}
	return r;
}

int main(void)
{
	// 한라봉을 담기 위한 상자들을 사용한 최소 횟수 저장
	int a;

	scanf("%d", &x);

	// a에 10kg, 5kg, 3kg, 1kg 박스들을 사용한 횟수를 저장시킨다.
	a = whil(10) + whil(5) + whil(3) + whil(1);

	// 총 상자를 사용한 최솟값을 출력한다.
	printf("%d", a);
}

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

2021 SFPC E0  (0) 2023.02.14
2021 SFPC E1  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10

#include <stdio.h>

int main()
{
	printf("2022-04-16");
}

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

2021 SFPC pB1 ver.2  (0) 2023.02.15
2021 SFPC E1  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10
#include <stdio.h>

// M = 달 별 마지막 날을 저장한 배열
// W = 요일들을 저장한 배열
int M[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30 };
char W[7][4] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };

// 입력: 윤년을 확인할 년도 y
// 출력: 윤년이면 1, 아니면 0
int is_yun_year(int y)
{
	return (((y % 4) == 0) && ((y % 100 != 0)) || ((y % 400) == 0));
}

int main()
{
	int a, b, c;
	scanf("%d %d %d", &a, &b, &c);

	int num = 0;
	// a * b * c를 한 값에서 1까지 빼주며 최소공배수를 구해준다.
	for (int i = a * b * c; i >= 1; i--)
	{
		if (i % a == 0 && i % b == 0 && i % c == 0) num = i;
	}

	// year = 정답 년도, month = 정답 월, day = 정답일, week = 정답 요일
	// 초기값은 2100년 1월 1일 금요일
	int year = 2100, month = 1, day = 1, week = 5;
	while (1)
	{

		// 만약 is_yun_year 함수에서 결과가 1이 나오면 윤년이란 뜻인데
		// M[2]가 2월 달 끝부분이므로 29로 바꾼다.
		if (is_yun_year(year))
			M[2] = 29;
		else
			M[2] = 28; // 윤년이 아니면 28로 둔다.
		if (num >= M[month]) // 만약 현재 달의 마지막 날을 넘은 상황
		{
			num -= M[month]; // num에 달 수를 뺸다.
			week += M[month]; // 요일에 지난 달 수를 더해준다.
			week %= 7; // week를 7로 나눈 값의 나머지를 저장하여 요일값으로 업데이트한다.
			month++; // 달을 하나 올린다.
			if (month == 13) // 만약 month가 13이면 년도를 올려줘야 하므로
			{
				year++; // 년도를 올려주고
				month = 1; // 달을 1로 바꿔준다.
			}
		}
		else break; //num가 M[month]를 넘지 않으면 이 반복문을 나간다.
	}
	// week와 num을 더한 값에 7로 나눈 값의 나머지를 저장시키며 요일을 구해준다.
	week = (week + num) % 7;

	// 년도는 4칸에 맞춰서 출력하고
	// 월과 일은 2칸에 맞춰 출력한다.
	// 요일은 요일들이 있는 배열 W에서 골라 출력해준다.
	printf("%04d-%02d-%02d %s", year, month, day + num, W[week]);
}

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

2021 SFPC pB1 ver.2  (0) 2023.02.15
2021 SFPC E0  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10

#include <stdio.h>

int main()
{
    printf("8");
}

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

2021 SFPC pB1 ver.2  (0) 2023.02.15
2021 SFPC E0  (0) 2023.02.14
2021 SFPC E1  (0) 2023.02.14
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C2  (0) 2023.02.10
2021 SFPC C1  (0) 2023.02.10

+ Recent posts