728x90
반응형
  • 문제

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오.

  • 입력

첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.

  • 출력

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

  • 예제 입력
baekjoon
  • 예제 출력
1 1 0 0 1 0 0 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0
  • 접근방식

주어진 문자열을 분해하여 (Map 또는 Array)에 카운팅

String 이면 Map이 좋음, Int면 Array → 일부 경우 제외

  • 코드

 

#include <iostream>
#include <algorithm>

using namespace std;

string s;
int cnt[26];
int main() 
{
	cin >> s;

	for (char input : s)
		cnt[input - 'a']++; // 배열 인덱스를 0~25까지 이동함
	//  cnt[input]++;       // 이런식이면 배열 인덱스가 97~125기 때문에 앞에 빈공간이 생겨 앞으로 이동시켜줌
	for (int i = 0; i < 26; i++)
		cout << cnt[i] << " ";
	return 0;
}

 

 

10808번: 알파벳 개수

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

www.acmicpc.net

 

728x90
반응형

'C++ > BOJ' 카테고리의 다른 글

[C++]/백준 11655 ROT13  (0) 2023.01.12
[C++]/백준 1159번 농구 경기  (0) 2023.01.12
[C++]/백준 10988번 펠린드롬인지 확인하기  (0) 2023.01.12
[C++]/백준 2979번 트럭 주차  (1) 2023.01.12
[C++]/백준 2309번 일곱 난쟁이  (1) 2023.01.12

+ Recent posts