대학원 일기

[백준 코딩 테스트] 5단계: 1차원 배열 본문

Coding test/Baek Joon Coding Test

[백준 코딩 테스트] 5단계: 1차원 배열

대학원생(노예) 2021. 12. 30. 00:20

평균(1546번)

#include <stdio.h>

int main(void) {

    int n, m = 0;
    double arr[1000];
    double res = 0;

    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%lf", &arr[i]);
        if (m < arr[i])
            m = arr[i];
    }

    for (int i = 0; i < n; i++) {
        arr[i] = arr[i] / m * 100.0;
        res += arr[i];
    }

    printf("%.2lf", (res/(double)n));

    return 0;
}

 

결과 화면

OX퀴즈(8958번)

#pragma warning(disable:4996)
#include <stdio.h>
#include <string.h>

int main(void) {

    int num, sum, score;
    char test[80];

    scanf("%d", &num);

    for (int i = 0; i < num; i++) {
        sum = 0;
        score = 1;
        scanf("%s", test);

        for (int j = 0; j < strlen(test); j++) {
            if (test[j] == 'O') {
                sum += score;
                score++;
            }
            if (test[j] == 'X')  score = 1;
        }
        printf("%d\n", sum);
    }

    return 0;
}

 

결과 화면

평균은 넘겠지(4344번)

#include <stdio.h>

int main(void) {

    int c, n;
    int score[1000], sum;
    double avg = 0;

    scanf("%d", &c);
    for (int i = 0; i < c; i++) {
        scanf("%d", &n);
        sum = 0;
        for (int j = 0; j < n; j++) {
            scanf("%d", &score[j]);
            sum += score[j];
        }

        avg = (double)sum / n;

        int count = 0;
        for (int j = 0; j < n; j++) {
            if (avg < score[j])
                count++;
        }
        printf("%.3f%%\n", (double)count * 100 / n);
    }

    return 0;
}

 

결과 화면

마치며

  백준 코테 5단계 1차원 배열을 풀어보았다. OX퀴즈 전인 평균 구하는 문제까지는 평소에 접해볼만 했던 알고리즘이여서 비교적 쉽게 풀었지만 OX 퀴즈부터는 쉽지 않고 생각을 하고 풀어야 했다. OX 퀴즈에서는 문자열의 길이를 구하기 위해 string의 strlen 함수를 사용하여 길이를 구했다. 이 방법으로 풀어내는 게 맞나 싶지만, 결과는 나왔으니 넘어가려 한다. 평균이 넘겠지 문제는 처음에 문제가 이해가 가지 않아 다른 블로그의 알고리즘을 분석한 후 풀어보았다. 확실히, 이미 완성된 코드를 분석하고 직접 구현해보니 어렵게 느껴지지는 않았다. 다음 포스트에서는 6단계: 함수에 대해 포스팅하겠다.

 

 

 

Comments