본문 바로가기
  • 밥 하루하루
공돌이/C언어

[CodeUP/C언어] C 1412번: 알파벳 개수 출력하기 문제

by BobBob 2021. 10. 17.
728x90
반응형
문제 설명

영어 문장이 주어지면 a부터 z까지 알파벳 문자가 각각 몇 번 나왔는지 출력하는 프로그램을 작성하시오.

 

입력

1. 90글자 이내의 영어로 된 문장이 입력된다.

2. 이 문장은 영어 소문자, 공백 및 특수 문자로만 이루어져 있다.

 

출력

a부터 z까지 사용된 알파벳 개수를 [입출력 예시]를 참고하여 출력한다. 특수문자와 공백의 개수는 출력하지 않는다.

 

입력 예시

oh! my god!

 

출력 예시

a:0

b:0

c:0

d:1

e:0

f:0

g:1

h:1

i:0

j:0

k:0

l:0

m:1

n:0

o:2

p:0

q:0

r:0

s:0

t:0

u:0

v:0

w:0

x:0

y:1

z:0

 

문제 풀이
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

#define BUFFER 100

int main() {
	char arr[BUFFER];
	int i, j, cnt;
	scanf("%[^\n]s", arr);
	printf("string: %s, length: %d\n\n", arr, strlen(arr));


	for (i = 97; i < 123; i++) {
		cnt = 0;
		for (j = 0; j < strlen(arr); j++) {
			if (i == arr[j])
				cnt++;
		}
		printf("%c(%d): %d\n", i, i, cnt);
	}
	return 0;
}

 

-. 우선 일반적으로 scanf를 써서 문자열을 받으면 공백을 문자열 끝으로 생각하기 때문에 뒤가 잘리는 문제가 발생함. 따라서, scanf("%s", arr)아닌 scanf("%[^\n]s", arr)로 바꿈. 이 방법 말고도 fgets이 있음.

-. 소문자 ASCII 코드 값은 97(a) ~ 122(z) 임. 

-. 입력받은 arr 값 길이만큼 for문 돌림. 소문자 ASCII 코드 값과 비교해서 count함.

 

728x90
반응형

댓글