Tuuna Computer Science

[C Language] 배열없이 문자열의 빈도수 구하기 본문

C language

[C Language] 배열없이 문자열의 빈도수 구하기

GuTTe 2018. 10. 26. 01:48

수요일에 프로그래밍 시험을 봤는데 2번 문제에 추가적인 배열을 만들지 않고 문자열의 빈도수를 구하라는 문제를 발견했다 :(


처음에 그냥 if else if문 27개를 만들어서 구할 생각이였지만 이건 좀 아니라는 생각에

알고리즘을 구상한 결과 아스키코드 0x20 ~122까지 돌리는 것이였다!



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
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    int check;
    char line[80];
    gets(line);
    int j;
    int a, tmp, result1=0, result2=0,i;
    int len=0;
    for(i=0;line[i]!='\0';i++)
    {
        len++;
    }
    //a = strlen(line);
    //printf("%d %d\n",len, a);
    for(i=0x20;i<=122;i++)
    {
        for(j=0;j<len;j++)
        {
            if(line[j] == i)
            {
                result1++;
                //printf("i : %d\n", i);
            }
        }
        printf("character : %c : %d\n", i, result1);
        if(result1 >= result2)
        {
            tmp = i;
            //printf("tmp : %d\n", tmp);
            result2 = result1;
            //printf("result2 : %d\n", result2);
            result1 = 0;
        }
        else
            result1 =0;
    }
    printf("가장 많은 빈도수 : %c %d\n",tmp,result2);
    return 0;
}
cs




Comments