[Baekjoon] - 5단계 : 1차원 배열

1. 최소, 최대

#include <stdio.h>

int main(){
    int n;
    scanf("%d",&n);
    
    int arr[n];
    for(int i=0;i<n;i++){
        scanf("%d",&arr[i]);
    }
    int max;
    int min;
    max = min = arr[0];
    
    for(int i=0;i<n;i++){
        if(arr[i] < min) min = arr[i];
        if(arr[i] > max) max = arr[i];
    }
    printf("%d %d",min,max);
}

2. 최댓값

#include <stdio.h>

int main(){
    int arr[9];
    for(int i=0;i<9;i++) scanf("%d",&arr[i]);
    
    int max = 0;
    int index = 0;
    for(int i=0;i<9;i++){
        if(max < arr[i]){
            max =arr[i];
            index = i+1;
        }
    }
    printf("%d\n%d",max,index);
}

3. 숫자의 개수

#include <stdio.h>

int main(){
    int a,b,c;
    int arr[10] = {};
    
    scanf("%d",&a);
    scanf("%d",&b);
    scanf("%d",&c);
    
    int mul = a*b*c;
    while(mul != 0){
        arr[mul%10]++;
        mul /= 10;
    }
    for(int i=0;i<10;i++){
        printf("%d\n",arr[i]);
    }
}

4. 나머지

#include <stdio.h>
#include <stdbool.h>

int main(){
    bool arr[42] = {};
    
    int num;
    for(int i=0;i<10;i++){
        scanf("%d",&num);
        
        arr[num%42]=true;
    }
    int count = 0;
    for(int i=0;i<42;i++){
        if(arr[i]) count++;
    }
    printf("%d",count);
}

5. 평균

#include <stdio.h>

int main(){
    int n;
    scanf("%d",&n);
    
    double arr[n];
    double max = 0;
    for(int i=0;i<n;i++){
        scanf("%lf",&arr[i]);
        if(max < arr[i]) max = arr[i];
    }
    
    double sum = 0;
    for(int i=0;i<n;i++){
        arr[i] = (arr[i]/max)*100;
        sum += arr[i];
    }
    printf("%.2lf", sum/(double)n);
}

6. OX퀴즈

#include <stdio.h>
#include <string.h>

int main(void) {
	int n;
	scanf("%d",&n);
 
	for(int i=0;i<n;i++){
        int count = 0;
        int score = 0;
		char correct[80];
        scanf("%s",correct);
        int len = strlen(correct);
        for(int j=0;j<len;j++){
            if(correct[j] == 'O') count++;
            else count = 0;
            
            score += count;
        }
		printf("%d\n",score);
	}
 
	return 0;
}

7. 평균은 넘겠지

#include <stdio.h>

int main(){
    int testCase,n;
    scanf("%d",&testCase);
    
    for(int i=0;i<testCase;i++){
        scanf("%d",&n);
        
        double score[n];
        double sum=0;
        for(int j=0;j<n;j++){
            scanf("%lf",&score[j]);
            sum += score[j];
        }
        double avg = sum/(double)n;
        
        double count = 0;
        for(int j=0;j<n;j++){
            if(score[j] > avg) count++;
        }
        printf("%.3f%%\n",count/(double)n*100);
    }
}

요약

  • 캐스팅을 잘해주거나 실수값을 잘 표현해야 오류가 없다.