백준 4659 비밀번호 발음하기 ❌

CJB_ny·2023년 1월 16일
0

백준

목록 보기
53/104
post-thumbnail

비밀 번호 발음하기

시간 2시간? 좀 넘게 썻는데 못풀었다..

밑에 코드 보면서 또 한수 배운다.

		for (int i = 0; i < s.size(); ++i)
		{
			int idx = s[i];
			if (IsMoeum(idx)) ++lcnt, vcnt = 0, is_include_v = 1;
			else vcnt++, lcnt = 0;
			if (vcnt == 3 || lcnt == 3) flag = 1;
			if (i >= 1 && (prev == idx) && (idx != 'e' && idx != 'o')) flag = 1;
			prev = idx;
		}

이부분 코드가 딱 알맞은거같다.

자음이나 모음은 3글자 이상 연속하지 못하고 두자리 연속하는 경우 'e'. 'o'만 딱 걸리내게 함.

뒤에 if, if문 두개가

cpp 코드

#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
#define endl "\n"

string s;
int lcnt, vcnt;
bool IsMoeum(int idx)
{
	return (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u');
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	while (1)
	{
		cin >> s; if (s == "end") break;
		lcnt = vcnt = 0;
		bool flag = 0;
		bool is_include_v = 0;
		int prev = -1;
		for (int i = 0; i < s.size(); ++i)
		{
			int idx = s[i];
			if (IsMoeum(idx)) ++lcnt, vcnt = 0, is_include_v = 1;
			else vcnt++, lcnt = 0;
			if (vcnt == 3 || lcnt == 3) flag = 1;
			if (i >= 1 && (prev == idx) && (idx != 'e' && idx != 'o')) flag = 1;
			prev = idx;
		}

		if (is_include_v == 0) flag = 1;
		if (flag) cout << "<" << s << ">" << " is not acceptable." << endl;
		else
			cout << "<" << s << ">" << " is acceptable." << endl;
	}
	
	return 0;
}
profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글