#include <stdio.h>

int main()
{
    // n = 
    int n, k[100004];

    //mn = 전체 구간중 배터리의 최솟값
    // a = 현재 배터리량
    int a = 0, mn = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) scanf("%d", &k[i]);

    for (int i = 1; i < n; i++)
    {
        // 고도가 낮아지는 경우
        if (k[i - 1] > k[i]) a += (k[i - 1] - k[i]) / 2;

        // 고도가 높아지는 경우
        else a += (k[i - 1] - k[i]) * 2;

        // 현재 배터리량이 0보다 작고 mn보다 작을 경우 정답 갱신
        if (a < 0 && a < mn) mn = a;
    }
    // -를 넣어 양수로 바꿔준다.
    printf("%d", -mn);
}

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

2022 SFPC pB1  (0) 2023.02.22
2022 SFPC pA0  (0) 2023.02.22
2022 SFPC pA1  (0) 2023.02.22
2022 SFPC E0  (0) 2023.02.21
2022 SFPC D1  (0) 2023.02.19
2022 SFPC D0  (0) 2023.02.18

#include <stdio.h>

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

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

2022 SFPC pA0  (0) 2023.02.22
2022 SFPC pA1  (0) 2023.02.22
2022 SFPC E1  (0) 2023.02.21
2022 SFPC D1  (0) 2023.02.19
2022 SFPC D0  (0) 2023.02.18
2022 SFPC C0  (0) 2023.02.17
#include <stdio.h>

int main()
{
    // a = 다리 위에 있는 학생 수
    // k = 대기중인 학생 수
    // w = 최대 인원
    // b = 다리 구간의 수
    // n = 다리를 건너야 하는 학급 수
    // k = 각 학급별 인원
    int a[104] = { 0 }, w, b, n, k[104];

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

    //1반부터 N반까지 학생 수 입력
    for (int i = 1; i <= n; i++) scanf("%d", &k[i]);

    // 시간 저장
    int t = 0;

    // 첫번째로 대기중인 학급
    int j = 1;

    // 종료 조건 체크
    while (1)
    {

        // 다리 위에 있는 학생 수
        int asum = 0;

        // 현재 다리에 학생이 얼마나 있는지 합계
        for (int i = 1; i <= b; i++)
            asum += a[i];

        // 다리 위에도 학생이 없고, 대기 중인 학급도 없다면 나가기
        if (asum == 0 && j > n)
            break;

        //1분이 흐름.
        t++;

        //다리의 첫 번째 위치에 있는 학생들은 이동이 끝남.
        asum -= a[1];

        // 한 칸씩 왼쪽으로 이동한다.(다리 한 칸 이동)
        for (int i = 2; i <= b; i++) a[i - 1] = a[i];
        // a[b]는 비어있을 것이므로 0으로 채워준다.
        a[b] = 0;

        //만약 대기하는 학급이 있으면 다리 위에 학생이 올라갈 수 있는지 확인
        if (j <= n)
        {
            // x에 다리에 올라올지 정하는 학급을 넣어놓는다.
            int x = k[j];

            // 다리 위에 올라갈 수 있는 경우
            if ((asum + x) <= w) {
                a[b] = x;

                //다음 학급으로 전환.
                j++;
            }
        }
    }
    //시간 출력.
    printf("%d", t);
}

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

2022 SFPC pA1  (0) 2023.02.22
2022 SFPC E1  (0) 2023.02.21
2022 SFPC E0  (0) 2023.02.21
2022 SFPC D0  (0) 2023.02.18
2022 SFPC C0  (0) 2023.02.17
2022 SFPC B0  (0) 2023.02.17

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

2022 SFPC E1  (0) 2023.02.21
2022 SFPC E0  (0) 2023.02.21
2022 SFPC D1  (0) 2023.02.19
2022 SFPC C0  (0) 2023.02.17
2022 SFPC B0  (0) 2023.02.17
2022 SFPC A0  (0) 2023.02.17
// 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
// 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

+ Recent posts