본문 바로가기
CS(Computer Science)지식/[C++][코딩 테스트] 자료구조 및 알고리즘

[C++] 백준 2941번: 크로아티아 알파벳

by 엔지니어 청년 2024. 2. 4.

문제링크

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

풀이방법

String STL을 사용하여 쉽게 해결 할 수 있다.

모든 크로아티아 알파벳을 Vector에 넣어 놓고 입력 받은 문자열 중에 크로아티아 알파벳이 존재하면 해당 문자열을 1로 변경한다. 최종적으로 1로 변경된 개수를 세면 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 알 수 있다. 참고로 String STL의 내장된 find함수와 replace함수를 통해서 매우 쉽게 해결 할 수 있다.

String 객체에 대해서 잘 모른다면 아래 영상을 참고하자

코드

#include <bits/stdc++.h>
using namespace std;

vector<string> alphas = { "c=","c-","dz=","d-","lj","nj","s=","z=" };

int main() {
	
	ios::sync_with_stdio(false);
	cin.tie(0);
	string w;
	cin >> w;
	for (auto alpha : alphas)
	{
		while (true)
		{
			int pos = w.find(alpha);
			if (pos == string::npos) break;
			w.replace(pos, alpha.size(), "1");
		}
	}
	cout << w.size();

}