Advertisement
Guest User

Untitled

a guest
May 27th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.14 KB | None | 0 0
  1. /* 세번째 버전::
  2.    첫번째 버전과 두번째 버전의 코드는 a~z까지 돌때마다 한번씩 문자열을
  3.    모두 순회하므로 상당히 비효율 적이라는 문제가 있다. 여기 세번째
  4.    버전은 단 한번 문자열 순회를 통해 a부터 z까지의 빈도를 모두
  5.    구한다. 구조가 어려운 코드는 아니므로 의미적으로 필요한 부분에만
  6.    설명을 첨부한다. */
  7. #include <stdio.h>
  8.  
  9. // 알파벳의 개수
  10. #define num_of_alpha 'z'-'a'+1
  11.  
  12. int main(void) {
  13.   char String[100];
  14.   scanf("%s", String);
  15.  
  16.   int Frequency[num_of_alpha] = {0};
  17.   for (int i = 0; String[i] != '\0'; i++)
  18.     Frequency[String[i]-'a']++;
  19.     // String[i]-'a'의 역할:
  20.     // a는 0번째로, b는 1번째로, c는 2번째로, ... 와 같이 현재
  21.     // 가리키고 있는 문자를 Frequency 배열에 매칭시킨다.
  22.   for (int i = 0; i < num_of_alpha; i++)
  23.     if (Frequency[i] != 0) printf("%c : %d\n", i+'a', Frequency[i]);
  24.     // i+'a'는 i가 0일때 a, 1일때 b, ... 이런식으로 매칭되어 출력 결과는
  25.     // a: 몇개, b: 몇개, ... 이런식으로 출력된다.
  26.   return 0;
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement