점수 합계를 저장할 변수로 sum 을 선언하자.
5개의 변수를 입력 받으면서, 40보다 작다면 40, 40 이상이라면 점수 그대로 sum 에 더해준다.
sum/5 가 정답.
| //code by RiKang, weeklyps.com #include <stdio.h> int main(void) { int sum=0; int a[5]; for(int i=0; i<5; i++){ scanf("%d",&a[i]); if(a[i]>40) sum+=a[i]; else sum+=40; } printf("%d",sum/5); return 0; } | cs |
사실 이 문제는 배열이 필요 없다. 굳이 저장하지 않고 한 번 쓰고 버릴 수 있기 때문이다.
| //code by RiKang, weeklyps.com #include <stdio.h> int main(void) { int sum=0; int a; for(int i=0; i<5; i++){ scanf("%d",&a); if(a>40) sum+=a; else sum+=40; } printf("%d",sum/5); return 0; } | cs |
변수 m 에 a[0] ~ a[8] 중의 최댓값을 저장하려면,
m과 모든 변수들을 비교해 보면서 m 이 a[i] 보다 작으면 m 에 a[i]를 넣으면 된다.
그다음에 m==a[i] 가 되는 i 를 찾으면 최대값이 몇 번째 수인지 알 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //code by RiKang, weeklyps.com #include <stdio.h> int main(void) { int m=0; int a[9]; for(int i=0; i<9; i++){ scanf("%d",&a[i]); if(m<a[i]) m=a[i]; } for(int i=0; i<9; i++){ if(m==a[i]){ printf("%d\n%d",m,i+1); } } return 0; } | cs |
평균값은 모든 값을 더한 후, 5로 나누면 된다.
문제는 중앙값인데, 중앙값의 특징을 관찰해 보면
중앙값 이하의 수는 3개 이상, 중앙값 미만의 수는 3개 미만이어야 함을 알 수 있다.
주어진 수를 크기 순서대로 늘어 놓았을 때 중앙값이 3번째 자리로 들어가기 때문이다.
이를 활용해 아래의 코드와 같이 중앙값을 구할 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //code by RiKang, weeklyps.com #include <stdio.h> int main(void) { int sum=0, mid; int a[5]; for(int i=0; i<5; i++){ scanf("%d",&a[i]); sum+=a[i]; } for(int i=0; i<5; i++){ int cnt1=0, cnt2=0; for(int j=0; j<5; j++){ if(a[j]<a[i]) cnt1++; if(a[j]<=a[i]) cnt2++; } if(cnt1<3 && cnt2>=3) mid = a[i]; } printf("%d %d",sum/5,mid); return 0; } | cs
|