24-2 SISS/C언어
[SISS/C언어 스터디] 2학기 6주차 스터디
noname64
2024. 11. 3. 23:50
자율 2문제를 풀어서 제출하면 됩니다.
언어는 C언어만 가능합니다.
레벨 제한사항: Silver 5 이상
25707
- 그리디 알고리즘 → 배열을 정렬하여 인접한 원소와 첫 원소와의 차이 절댓값을 합산하여 출력한다
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
int main() {
int numbers[1000];
int n, sum = 0;
// n 입력
scanf("%d", &n);
// 숫자 입력(n개)
for (int i = 0; i < n; i++) {
scanf("%d", &numbers[i]);
}
// 정렬
qsort(numbers, n, sizeof(int), compare);
// 차의 절댓값
for (int i = 0; i < n; i++) {
if (i != n - 1)
sum += abs(numbers[i] - numbers[i + 1]);
else
sum += abs(numbers[i] - numbers[0]);
}
// 출력
printf("%d\n", sum);
return 0;
}
25206
- 구현 → 문제에 주어진 조건대로 코드 작성(학점 및 평점을 고려하여 작성)
#include <stdio.h>
#include <string.h>
int main() {
char grade[3];
float credit;
float sum = 0;
float hakjeom = 0;
for (int i = 0; i < 20; i++) {
// 학점과 등급만 입력(과목 명 무시)
scanf("%*s %f %s", &credit, grade);
if (strcmp(grade, "P") == 0) {
continue; // "P"일 경우 넘어감
} else {
hakjeom += credit; // 총 학점에 더함
// 등급에 따라 학점을 계산하여 sum에 더함
if (strcmp(grade, "A+") == 0) {
sum += 4.5 * credit;
} else if (strcmp(grade, "A0") == 0) {
sum += 4.0 * credit;
} else if (strcmp(grade, "B+") == 0) {
sum += 3.5 * credit;
} else if (strcmp(grade, "B0") == 0) {
sum += 3.0 * credit;
} else if (strcmp(grade, "C+") == 0) {
sum += 2.5 * credit;
} else if (strcmp(grade, "C0") == 0) {
sum += 2.0 * credit;
} else if (strcmp(grade, "D+") == 0) {
sum += 1.5 * credit;
} else if (strcmp(grade, "D0") == 0) {
sum += 1.0 * credit;
} else {
sum += 0;
}
}
}
// 결과 출력
printf("%.6f\n", sum / hakjeom);
return 0;
}