본문 바로가기
프로그램/C언어 1000제

C언어 52제] C언어 콘서트 CHAPTER 7 Programming 11 1차원배열 빈도수 구하기 p292

by 건티 2021. 12. 7.
728x90

출처 : 반크_역사 속 한류

 

참고풀이]

//Dev-C++ 5.11로 작업함.
#include <stdio.h>

int main()
{
   int N;//입력변수

   printf("입력할 정수의 개수(100개 이내로) : ");
   scanf("%d",&N);

   int inSu[N]; //입력개수까지 수들을 저장할 배열변수 
   int Count1[N];//입력된 수 중 미중복 수를 구할 배열변수
   int Count2[N];//입력된 수 중 미중복 수의 빈도수를 구할 배열변수
   int chk1,chk2;//중복여부 체크변수
   int cnt;//미중복수의 개수를 세는 변수 
   int i,j;//반복변수

   //입력 수 N까지 정수를 입력한다. 
   for(i=0;i<N;i++)
   {
      printf("%d번째 요소를 입력하시오 : ",i);
      scanf("%d",&inSu[i]);
   }

   //입력된 수 중 미중복수를 구한다.
   chk1=inSu[0];
   Count1[0]=inSu[0];
   cnt=1;
   for(i=1;i<N;i++)
   {
      if(chk1!=inSu[i])
      {
         chk2=1;
         for(j=0;j<cnt;j++)
            if(inSu[i]==Count1[j])
            {
               chk2=0;
               break;
            }
         if(chk2)
         {
            Count1[cnt++]=inSu[i];
            chk1=inSu[i];
         }
      }
   }

   //미중복수를 오름차순으로 정렬한다.
   for(i=0;i<cnt-1;i++)
      for(j=i+1;j<cnt;j++)
         if(Count1[i]>Count1[j])
         {
            int tmp=Count1[i];
            Count1[i]=Count1[j];
            Count1[j]=tmp;
         }

   //미중복수를 기준으로 입력정수의 빈도수를 구한다.
   for(i=0;i<cnt;i++)
   {
      Count2[i]=0;
      for(j=0;j<N;j++)
         if(Count1[i]==inSu[j])
            Count2[i]++;
   }

   //결과출력
   for(i=0;i<cnt;i++) 
      printf("%d값은 %d번 등장\n",Count1[i],Count2[i]);

   return 0;
}

 

참고풀이 결과]

 

 

 

대한민국의 아름다운 영토, 독도

 

반응형

댓글