일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Rust
- data communication
- C
- Operating System
- 데이터베이스
- java
- Database
- OS
- 백준 러스트
- 러스트 프로그래밍 공식 가이드
- 오라클
- 알고리즘
- Python
- 운영체제
- 러스트 예제
- Python challenge
- 자바 기초
- 파이썬 챌린지
- 파이썬
- Reversing
- ubuntu
- 백준
- 데이터 통신
- 러스트
- 자바
- 오라클DB
- 파이썬 알고리즘
- 우분투
- 파이썬 첼린지
- 자바 개념
Archives
- Today
- Total
IT’s Portfolio
[C] 알고리즘 - 문장의 알파벳 빈도수 계산하기 본문
728x90
반응형
* 조건 *
① 입력되는 문장의 최대 길이 : 1024
② 대소문자 상관없이 빈도 계산 => a와 A가 문장에 포함되어 있다면 알파벳 a의 빈도수는 2가 된다.
③ 공백과 특수기호 무시
④ 배열을 이용해 빈도수를 기록하고, 입력된 문자열로부터 빈도수를 계산하는 함수를 직접 구현
#include <stdio.h>
int* calFrequency(char data[]) {
// 소문자
int s = 97;
// 대문자
int b = 65;
// 알파벳 개수 처리 배열
static int output[26] = { 0, };
for (int i = 0; i < 1024*sizeof(char); i++) {
// A~Z, a~z까지 반복
for (int j = 0; j < 26; j++) {
// data의 문자와 해당 문자가 같으면 output 1 증가
if (data[i] == (char)(s + j) || data[i] == (char)(b + j)) {
output[j]++;
break;
}
}
}
return output;
}
void main() {
char input[1024*sizeof(char)];
int j = 97;
printf("input a string\n");
// scanf_s 함수는 뒤에 배열의 크기까지 같이 써줘야지 값을 입력할 수 있음.
// %[^\n] : \n 엔터를 제외한 모든 문자열을 받는다.
scanf_s("%[^\n]", input, 1024*sizeof(char));
int* fre = calFrequency(input);
printf("\n[Frequency]\n");
for (int i = 0; i < 26; i++) {
printf("%c:%d\n", (char)j, fre[i]);
j += 1;
}
printf("\nBye!\n");
}
실행
728x90
반응형
'Development Study > C' 카테고리의 다른 글
[C] C & Cpp with Mac Vscode 참고 글 (0) | 2023.03.05 |
---|---|
[C] 알고리즘 - 랜덤 정수들 중 두 번째로 큰 값 출력하기 (0) | 2020.06.28 |
[C] 알고리즘 - 최댓값과 최솟값 구하는 연습문제 (0) | 2020.04.08 |
[C] 알고리즘 - 세 정수의 최댓값 (0) | 2020.04.06 |
[C] 시작글 (0) | 2020.04.03 |
Comments