24-여름 SISS/C언어
[SISS/C언어 스터디] 여름 7주차 스터디
noname64
2024. 8. 17. 20:00
자율 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;
}