티끌모아 태산

[백 준/구현] 10808: 알파벳 개수 본문

백준 문제/문자열,누적합,구현

[백 준/구현] 10808: 알파벳 개수

goldpig 2023. 12. 26. 15:07
728x90

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

 

10808번: 알파벳 개수

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

www.acmicpc.net

핵심 아이디어

  • 카운팅 배열
  • 아스키 코드

코드 구현

s = input()
arr = [0] * 26

for i in s:
	arr[ord(i) - 97] += 1

for i in arr:
	print(i, end = ' ')

arr = [0 0 ... 0] 0이 26개 있는 list의 각 원소들을 update해주는 형태로 로직을 짜면 됩니다. 

예) n이 'baekjoon'인 경우, 첫번째 for문에서 i는 'b'가 되어 arr[ord('b')-97] = arr[1]가 제대로 update됩니다.

 

C ++ 코드

C++ 에서 size() 와 length()의 차이점을 알게 됐다. 전자는 string 객체가 메모리에서 실제 사용하고 있는 크기를 나타내며, 후자는 문자열의 길이를 나타낸다. 

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

int list[26]; // 26개의 정수를 저장할 수 있는 배열 선언

int main() {
	// 이 두줄은 C++ 프로그램 입출력 속도 향상 설정
	ios::sync_with_stdio(false);
	cin.tie(0);
	// 입력받을 문자열을 저장할 변수
	string str; 
	cin >> str; // 문자열 입력 받기

	for (int i = 0; i < str.size(); i++) {
		list[str[i] - 'a']++;
	}
	for (int i = 0; i < 26; i++) {
		cout << list[i] << "";
	}
}
728x90