24-여름 SISS/C언어

[SISS/C언어 스터디] 여름 7주차 스터디

noname64 2024. 8. 17. 20:00

여름 7주차 스터디
백준 제출 내역 화면 캡쳐

자율 2문제를 풀어서 제출하면 됩니다.

언어는 C언어만 가능합니다.

레벨 제한사항: Bronze 3 이상

 

11659


  • 누적 합 → 각각의 인덱스까지의 합을 구하여 저장한 후, 구간 별 합은 시작 인덱스-1 까지의 합을 빼 구함
// 11659.c

#include <stdio.h>

int main()
{
    // 문제의 입력 범위를 참고하여 배열 크기 설정
    int n, m;
    int arr[100001];
    int sum[100001] = {
        0,
    };

    // 수의 개수(n)와 구해야할 합의 개수(m)
    scanf("%d %d", &n, &m);

    // 수열을 입력받으며 각각의 인덱스까지의 누적합을 저장
    for (int i = 1; i <= n; i++)
    {
        scanf("%d", &arr[i]);
        sum[i] = sum[i - 1] + arr[i];
    }

    // 구해야하는 구간 별 합을 차를 이용하여 계산
    for (int i = 0; i < m; i++)
    {
        int a, b;
        scanf("%d %d", &a, &b);
        printf("%d\n", sum[b] - sum[a - 1]);
    }

    return 0;
}

 


1065


  • 브루트포스 → 입력 수의 범위가 1000 미만이므로 일의 자리와 십의 자리, 십의 자리와 백의 자리 수의 차를 구하여 같은지 여부를 통해 등차수열임을 확인할 수 있음
// 1065.c

#include <stdio.h>

int main()
{
    int n;
    int cnt = 0;

    // 최대 범위 입력
    scanf("%d", &n);

    for (int i = 1; i <= n; i++)
    {
        // 100보다 작은 경우는 모두 등차수열
        if (i < 100)
        {
            cnt++;
        }
        // 1000보다 작은 수이므로 일의 자리와 십의자리, 십의 자리와 백의 자리 수의 차가 같으면 등차수열
        else
        {
            int a = i / 100;
            int b = (i % 100) / 10;
            int c = i % 10;

            if (a - b == b - c)
            {
                cnt++;
            }
        }
    }

    printf("%d", cnt);

    return 0;
}