일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 웹
- 소프트웨어
- hacking
- bee-box
- network
- WarGame
- 시스템
- 웹해킹
- reversing
- 알고리즘
- 모의해킹
- 드림핵
- webhacking
- Webhaking
- Web
- CodeEngn
- 리버싱
- 워게임
- 소프트웨어보안
- 해킹
- 시스템해킹
- ftz
- 비박스
- System
- dreamhack
- XSS
- 순서도
- 네트워크
- 네트워크보안
- TCP
- Today
- Total
Without a Break
[순서도 실습] 백준 2587번 - 대표값2 (C) 본문
문제
어떤 수들이 있을 때, 그 수들을 대표하는 값으로 가장 흔하게 쓰이는 것은 평균이다. 평균은 주어진 모든 수의 합을 수의 개수로 나눈 것이다. 예를 들어 10, 40, 30, 60, 30의 평균은 (10 + 40 + 30 + 60 + 30) / 5 = 170 / 5 = 34가 된다.
평균 이외의 또 다른 대표값으로 중앙값이라는 것이 있다. 중앙값은 주어진 수를 크기 순서대로 늘어 놓았을 때 가장 중앙에 놓인 값이다. 예를 들어 10, 40, 30, 60, 30의 경우, 크기 순서대로 늘어 놓으면

이 되고 따라서 중앙값은 30이 된다.
다섯 개의 자연수가 주어질 때 이들의 평균과 중앙값을 구하는 프로그램을 작성하시오.
입력
첫째 줄부터 다섯 번째 줄까지 한 줄에 하나씩 자연수가 주어진다. 주어지는 자연수는 100 보다 작은 10의 배수이다.
출력
첫째 줄에는 평균을 출력하고, 둘째 줄에는 중앙값을 출력한다. 평균과 중앙값은 모두 자연수이다.
#include <stdio.h>
#include<stdlib.h>
int compare(const void *a, const void *b)
{
int num1 = *(int *)a;
int num2 = *(int *)b;
if (num1 < num2)
return -1;
if (num1 > num2)
return 1;
return 0;
}
int main(void)
{
int i, sum = 0, max = -1, cnt;
int arr[5] = { 0, };
int arr2[105] = { 0, };
for (i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
sum += arr[i];
}
sum /= 5;
qsort(arr, 5, sizeof(int), compare);
printf("%d\n%d", sum, arr[2]);
}
참고 블로그
백준 2587 - 대표값2 [C언어]
1. 퀵정렬로 정렬한다음에 3번째 수를 출력했어요. 2. 어차피 5개뿐이라 이게 됩니다! #include #include int compare(const void *a, const void *b) { int num1 = *(int *)a; int num2 = *(int *)b; if (num1 < num2) return -1; if (num1 >
ddanss.tistory.com
[순서도]

헷갈리는 부분
: 메인 함수에서 compare 함수를 호출할 때, qsort 함수 내부에서 호출하는걸 어떻게 표현해야할 지 모르겠다..
'Algorithm > 컴퓨터알고리즘' 카테고리의 다른 글
병합/퀵 정렬, 이분/순차 검색, 최소비용 그래프 (0) | 2022.11.26 |
---|---|
[순서도 실습] 백준 1065번 - 함수 (C) (0) | 2022.11.26 |
석차, 선택/버블/삽입 정렬 (0) | 2022.11.18 |
[순서도 실습] 백준 1932번 - 정수 삼각형 (0) | 2022.11.16 |
'ㄹ'자 모양 배열, 마방진 배열, 배열 회전, 행렬 곱셈 알고리즘 순서도 (0) | 2022.11.15 |