정신과 시간의 방
카테고리
작성일
2024. 7. 26. 21:10
작성자
risehyun
  • 문제

 

  • 풀이
#include <iostream>

using namespace std;
int main()
{
	string alphabet[8] = { "c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z=" };

	string input = "";
	int result = 0;

	cin >> input;

	for (int i = 0; i < 8; i++)
	{
		while (1)
		{
			if (input.find(alphabet[i]) != -1)
			{
				input.replace(input.find(alphabet[i]), alphabet[i].length(), "#");
			}
			else
			{
				break;
			}
		}
	}

	result = input.length();

	cout << result;

	return 0;
}

 

  • 메모
    크로아티아 알파벳이 2글자로 구성되어 있으므로, input 받은 문자열에 대해서 for문을 돌며 알파벳의 첫번째에 해당하는 값이 i에 올때 i+1번에 =,-등이 있는지 확인하는 방식으로 푸는 방법도 있지만 string의 find 기능을 사용하면 if문을 길게 사용해 모든 조건을 검사하지 않아도 빠르게 해결되기 때문에 이와 같은 방식을 사용했다. replace를 해주는 이유는 중복해서 문자를 찾는 것을 방지하기 위함이다.

'코딩테스트' 카테고리의 다른 글

[백준/2563번/C++] 색종이  (0) 2024.07.31
[백준/10798번/C++] 세로읽기  (0) 2024.07.27
[백준/10811번/C++] 바구니 뒤집기  (0) 2024.07.25
[백준/2588번/C++] 곱셈  (0) 2024.07.21
☆ [백준/10847번/C++] 큐  (0) 2024.07.16