24-2 SISS/C언어

[SISS/C언어 스터디] 2학기 6주차 스터디

noname64 2024. 11. 3. 23:50

2학기 6주차 스터디
백준 제출 내역 화면 캡쳐

자율 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;
}