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

KIMHAJIN·2023년 3월 11일
0

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


백준 2941번 : 크로아티아

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

int main() {
	vector<string> croatia = { "c=", "c-", "dz=", "d-", "lj", "nj","s=", "z=" };
	string input;
	cin >> input;

	for (int i = 0; i < croatia.size(); i++) {
		int s = input.find(croatia[i]);
		while (input.find(croatia[i]) != string::npos) {
			input.replace(s, croatia[i].length(), "*");
            s = input.find(croatia[i], s+1);
		}
	}
	
	cout << input.length();
}

배열로 크로아티아 알파벳을 지정해도 됨 string croatia = {~~~};

string::npos find함수에서 값이 없으면 인덱스 반환을 안함. 이때, 없는 문자열을 찾으라고하면 string::npos를 반환함

즉,

while (input.find(croatia[i]) != string::npos) { //문자열이 발견된다면
			input.replace(s, croatia[i].length(), "*"); //해당 인덱스에서 크로아티아 알파벳 길이만큼 *로 바꾸겠다
            s = input.find(croatia[i], s+1); // s+1 인덱스부터 다시 find
		}

find() #include

문법 : find(”찾고싶은 문자열”, 찾기 시작할 인덱스);

while문을 쓴 이유: 같은 크로아티아알파벳이 여러개 있을 수도 있으니 모두 다 찾을 때까지 반복

profile
Good day

0개의 댓글