—ฅ/ᐠ. ̫ .ᐟ\ฅ —

과목 일반

[프로그래밍 기초] 🎓 중간고사 오답노트

WIFI-Aircat 2024. 11. 30. 19:08
💾 Basic of Programming
Mid-term Exam

 


🆀 문제 1.
a부터 b까지 약수가 홀수인 숫자의 개수

🆂 풀이
나의 풀이

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void) {
    int a, b;
    int i = 0, j = 0;
    int total = 0;
    scanf("%d %d", &a, &b);
    for (i = a; i <= b; i++) {
        for (j = 1; j <= b; j++) {
            if (i % j == 0) {
                total++;
            }
        }
        if (total > 0 && total % 2 != 0) {
            printf("%d ", i);
            total = 0;
        }
    }
    return 0;
}



정답

#include <stdio.h>
#include <math.h>
int main(){
    int a, b, x;
    scanf("%d %d", &a, &b); // a에서 b까지
    for(int i = 1; i < b; i++){
        x = pow(i, 2);
        if(x >= a && x <= b){
            printf("%d ", x);
        }
    }
    return 0;
}


풀긴 풀었는데 쉽게 만드는 방법이 있었다.
약수의 개수가 홀수인 수는 제곱수밖에 없다.
a^x의 경우 제곱수의 약수의 개수는 x+1



🆀 문제 2.
평균, 표준편차

🆂 풀이
나의 풀이

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
int main(void) {
    int n = 0, i;
    int num[50] = { 0 };
    double total = 0, avg = 0;
    double disp = 0, stak = 0;
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        scanf("%d", &num[i]);
        total += num[i];
    }
    avg = total / n;
    printf("%.3f\n", avg);
    // 표준편차
    for (i = 0; i < n; i++) {
        disp = pow(num[i] - avg, 2);
        stak += disp;
    }
    printf("%.3f", sqrt(stak / n));
    return 0;
}


- 표준편차: 분산의 제곱
- 분산: 평균과의 차를 각각 제곱하여 개수로 나눈 것


🆀 문제 3.
5
00100
02120
32123
02120
00100

🆂 풀이
나의 풀이

#include <stdio.h>
int main(){
    int input = 7;
    int half = (input - 1)/2; //2
    for (int i = half; i >= 0; i--){ // 2 1 0
        for (int j = 0; j < i ;j++)
            printf("0");
        for (int j = half-i; j > 0; j--)
            printf("%d", j+1);
        for (int j = 0; j <= half-i; j++)
            printf("%d", j+1);
        for (int j = 0; j < i ;j++)
            printf("0");
        puts("");
    }
    for (int i = half; i > 0; i--){ // 2 1 
        for (int j = 0; j <= half - i; j++)
            printf("0");
        for (int j = i; j > 0; j--)
            printf("%d", j);
        for (int j = 1; j < i; j++)
            printf("%d", j+1);
        for (int j = 0; j <= half - i; j++)
            printf("0");
        puts("");
    }    
    return 0;
}


이중 반복문: 별 찍기에 대해서 알 수 있는 시간이었음.
매번 실행해보지 않아도 상상할 수 있을 정도가 되면 더욱 좋겠다.


 

반응형