본문 바로가기

개발/백준

[백준] 10808번. 알파벳 개수 (C++)

문제 설명

https://www.acmicpc.net/problem/10808

 

10808번: 알파벳 개수

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

www.acmicpc.net

해결 방식

#include<iostream>
using namespace std;

int main() 
{
	string S;
	cin >> S;

	int alphabet[26] = {};

	for (int i = 0; i < S.length(); i++)
	{ alphabet[int(S[i])-97]++; }

	for (int num : alphabet)
	{ cout << num << " "; }
}

 

string S; cin >> S;

문자열 S를 입력받는다.

 

int alphabet[26] = {};

알파벳 개수를 저장할 배열을 만든다.

 

for (int i = 0; i < S.length(); i++)
{ alphabet [int(S[i])-97]++; }

문자열의 길이 만큼(S.length()) 반복하며 확인해보자

알파벳 소문자의 아스키코드는 97~122이다.

알파벳의 아스키코드 int(S[i])에서 97을 빼주면

a부터z까지는 0부터 25의 숫자가 된다.

배열의 해당 값을 하나씩 증가시키면 알파벳 개수를 구할 수 있다.

for (int num : alphabet)
{ cout << num << " "; }

for-each 로 결과를 출력한다.