안녕하세요 문제를 풀던중 2일동안 고민해도 더이상 안풀려서 문제의 원인을 찾고자 질문합니다.
문제 설명
0에서 9까지의 정수만 1000개를 입력받아,
각각의 정수가 입력된 횟수를 모두 출력하고,
그 중 가장 많이 입력받은 수와 그 개수를 출력하시오.
배열은 반드시 0으로 초기화하여 사용하시오.
입력 형식
공백으로 구분된 0부터 9까지의 정수 (그 외의 값은 들어오지 않는다고 가정할 것)
출력 형식
0-9까지, 각 정수를 출력하고, colon 을 넣은 후, 5칸에 우측정렬된 정수형으로 출력하고 개행문자로 구분하시오.
그 이후, 가장 많이 입력받은 수와 그 개수를 정수형으로 각각 개행문자를 추가해 출력할 것
#include<stdio.h>
#define size 1000
int main()
{
int num[size] = { 0, },count[10][2] = { 0, }, Array[10] = { 0, };//배열 초기화
int i,j,k=0;
int a,b,temp;
int frequency_number, frequency = 0;//빈도수를 나타내는 변수
for (i = 0; i < size; i++)//배열의 크기만큼 입력을 받음
scanf("%d", &num[i]);
for (i = 0; i < size; i++)//배열의 크기만큼 반복
{
for (j = 0; j < k; j++)
{
if (count[j][0] == num[i])
{
count[j][1]++;
break;
}
}
if (j == k)
{
count[k][0] = num[i];
count[k][1]++;
k++;
}
if (num[i] >= 0 && num[i] < 10)//입력의 값이 0에서 9사이인지 확인
{
Array[num[i]]++;
}
}
frequency = Array[0];
frequency_number = 0;
for (b = 0; b < size; b++)//오름차순 정렬
{
for (a=0; a < size-1-b; a++)
{
if (count[a][0] > count[a+1][0])
{
temp = count[a][0];
count[a][0] = count[a+1][0];
count[a+1][0] = temp;
}
}
}
for (i = 0; i < 10; i++)//출력
{
if (count[i][1]!= 0)
printf("%d:%5d\n", count[i][0], count[i][1]);
}
for (int n = 0; n < 10; n++)
{
if (frequency < Array[i])
{
frequency = Array[i];
frequency_number = i;
}
}
printf("%d\n%d\n", frequency_number, frequency); //빈도수 출력
return 0;
}
제가 짠 코드 인데 출력값이 빈도수와 오름차순이 정확하게 떨어져야 하는데 예를들어 9 8 7 5 4 2 2 1 1 1을 넣으면 맨위는 0으로 채워지고 빈도수는 오름차순과 일치하지 않고 다르게 나옵니다 문제의 원인을 몰라서 질문드립니다