728x90

20240327 백준 C언어 공부
2587번 대표값2

1. 문제
어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 
평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 
예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + 30) / 5 = 170 / 5 = 34가 된다.

평균 이외의 또 다른 대표값으로 중앙값이라는 것이 있다. 
중앙값은 주어진 수를 크기 순서대로 늘어 놓았을 때 가장 중앙에 놓인 값이다. 
예를 들어 10, 40, 30, 60, 30의 경우, 크기 순서대로 늘어 놓으면

10 30 30 40 60

이 되고 따라서 중앙값은 30이 된다.

다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오.

2. 입력
첫째 줄부터 다섯 번째 줄까지 한 줄에 하나씩 자연수가 주어진다. 
주어지는 자연수는 100 보다 작은 10의 배수이다.

3. 출력
첫째 줄에는 평균을 출력하고, 둘째 줄에는 중앙값을 출력한다. 
평균과 중앙값은 모두 자연수이다.

>>>코드

# include <stdio.h>

int main(void){
    int n[5], tmp, avg = 0;
    for (int i = 0; i< 5; i++){
        scanf("%d", &n[i]);
        avg += n[i];
    }
    avg /= 5;
    for (int i = 0; i<5; i++){
        for (int j = 0; j<4-i; j++){
            if (n[j] > n[j+1]){
                tmp = n[j];
                n[j] = n[j+1];
                n[j+1] = tmp;
            }
        }
    }
    printf("%d\n%d", avg, n[2]);
}



>>>문제링크
https://www.acmicpc.net/problem/2587

728x90
728x90

20240326 백준 C언어 공부
2750번 수 정렬하기

1. 문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

2. 입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 
이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

3. 출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

>>>코드

# include <stdio.h>
int main(void){
    int n, num[1000], tmp;
    scanf("%d", &n);
    for (int i = 0; i< n; i++){
        scanf("%d", &num[i]);
    }
    for (int i = 0; i<n; i++){
        for (int j = 0; j<n-i-1; j++){
            if (num[j] > num[j+1]){
                tmp = num[j];
                num[j] = num[j+1];
                num[j+1] = tmp;
            }
        }
    }
    for (int i = 0; i<n; i++){
        printf("%d\n", num[i]);
    }
}



>>>문제링크
https://www.acmicpc.net/problem/2750

728x90
728x90

20240313 백준 C언어 공부
5800번 성적 통계

1. 문제
한상덕은 이번에 중덕 고등학교에 새로 부임한 교장 선생님이다. 
교장 선생님으로서 첫 번째 일은 각 반의 수학 시험 성적의 통계를 내는 일이다.

중덕 고등학교 각 반의 학생들의 수학 시험 성적이 주어졌을 때, 
최대 점수, 최소 점수, 점수 차이를 구하는 프로그램을 작성하시오.

2. 입력
첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 
다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 
시험 성적은 0보다 크거나 같고, 100보다 작거나 같은 정수이고, 공백으로 나누어져 있다. 

3. 출력
각 반에 대한 출력은 다음과 같이 두 줄로 이루어져 있다.

- 첫째 줄에는 "Class X"를 출력한다. X는 반의 번호이며 입력으로 주어진 순서대로 1부터 증가한다.
- 둘째 줄에는 가장 높은 점수, 낮은 점수, 성적을 내림차순으로 정렬했을 때 가장 큰 인접한 점수 차이를 예제 출력과 같은 형식으로 출력한다.

>>>코드

#include <stdio.h>
int main(void){
    int n, k, max, min, gap, temp, score[50];
    scanf("%d", &k);
    for (int i = 1; i <= k; i++){
        max = 0, min = 100, gap = 0;
        scanf("%d", &n);
        for (int j = 0; j < n; j++){
            scanf("%d", &score[j]);
            if (max < score[j]) max = score[j];
            if (min > score[j]) min = score[j];
        }
        for (int j = 0; j < n; j++){
            for (int l = 0; l < n-1-j; l++){
                if (score[l] < score[l+1]){
                    temp = score[l];
                    score[l] = score[l+1];
                    score[l+1] = temp;
                }
            }
        }
        printf("Class %d\n", i);
        for (int j = 0; j < n-1; j++){
            if (gap < score[j]-score[j+1]){
                gap = score[j]-score[j+1];
            }
        }
        printf("Max %d, Min %d, Largest gap %d\n", max, min, gap);
    }
    return 0;
}



>>>문제링크
https://www.acmicpc.net/problem/5800

728x90

+ Recent posts