πŸ“ Coding Test Study/Algorithm Problem

[C++][Baekjoon][λ¬Έμžμ—΄] 10808번 μ•ŒνŒŒλ²³ 개수

ibelieveinme 2024. 2. 3. 19:13
728x90
  • 문제
 

10808번: μ•ŒνŒŒλ²³ 개수

단어에 ν¬ν•¨λ˜μ–΄ μžˆλŠ” a의 개수, b의 개수, …, z의 개수λ₯Ό 곡백으둜 κ΅¬λΆ„ν•΄μ„œ 좜λ ₯ν•œλ‹€.

www.acmicpc.net

μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œλ§Œ 이루어진 단어 Sκ°€ μ£Όμ–΄μ‘Œλ‹€. 각 μ•ŒνŒŒλ²³μ΄ 단어에 λͺ‡ κ°œκ°€ ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€λ₯Ό κ΅¬ν•˜λΌ.

단어에 ν¬ν•¨λ˜μ–΄ μžˆλŠ” a의 개수, b의 개수, …, z의 개수λ₯Ό 곡백으둜 κ΅¬λΆ„ν•΄μ„œ 좜λ ₯ν•œλ‹€.

 

 
  • 풀이

μ•ŒνŒŒλ²³μ˜ κ°œμˆ˜κ°€ 총 26개이고, λ¬Έμžμ—΄μ€ μ•„μŠ€ν‚€ μ½”λ“œλ‘œ ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ―€λ‘œ index 에 따라 μ •μˆ˜κ°’μ„ κ°–λŠ”λ‹€λŠ” 것을 μ΄μš©ν•˜λ©΄ λœλ‹€.

 

1) 단어 S 의 μ•ŒνŒŒλ²³ 개수λ₯Ό count ν•  벑터λ₯Ό λ§Œλ“ λ‹€.

vector<int> alphabets(26, 0);

 

2) μ•„μŠ€ν‚€κ°’μ„ μ‚¬μš©ν•΄μ„œ μ•ŒνŒŒλ²³ index λ₯Ό κ΅¬ν•΄μ„œ 1)μ—μ„œ λ§Œλ“  벑터에 μΉ΄μš΄νŠΈν•œλ‹€.

int index = (int)alphabet[i] - (int)'a';

 

a λ₯Ό μ•„μŠ€ν‚€ μ½”λ“œ κ°’μœΌλ‘œ ν‘œν˜„ν•˜λ©΄ 97 이닀.

즉, alphabet[i] 값이 a 라면 97을 λΉΌλ©΄ 0이 λœλ‹€.

 bλŠ” 1, cλŠ” 2, dλŠ” 3, ...

 

  • κΈ°μ–΅ν•  것

1) 벑터 크기 생성 및 μ΄ˆκΈ°ν™”

vector<int> alphabets(26, 0);

 

2) a 의 μ•„μŠ€ν‚€κ°’

97

 

  • μ½”λ“œ
#include <iostream>
#include <vector>
using namespace std;


int main() {
	vector<int> alphabets(26, 0);
	string alphabet = "";

	cin >> alphabet;

	for (int i = 0; i < alphabet.length(); i++) {
		int index = (int)alphabet[i] - (int)'a';
		alphabets[index] += 1;
	}

	for (int i = 0; i < alphabets.size(); i++) {
		cout << alphabets[i] << " ";
	}

	return 0;
}

 

 C++ λžœλ§Œμ— ν‘Έλ‹ˆκΉŒ ꡬ문이 ν—·κ°ˆλ¦°λ‹€ ν—ˆν—ˆ

728x90