인프런 커뮤니티 질문&답변

SpRingLJM님의 프로필 이미지
SpRingLJM

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-H

2-H 질문있습니다

해결된 질문

작성

·

114

·

수정됨

0

if(isVowel(idx)) mcnt++, scnt = 0, is_include_v = 1;

else scnt++, mcnt = 0;

if(mcnt == 3 || scnt == 3) flag = 1;

이 부분이 제가 이해하고 있는 것이 맞는지 궁금합니다.
예제 입력에 ptoui를 예를 들어보겠습니다.
for문에서 ptoui라는 문자열을 알파벳 하나하나 받아주면서

p -> vcnt++, lcnt = 0 => vcnt = 1, lcnt = 0

t -> vcnt++, lcnt = 0 => vcnt = 2, lcnt = 0

o -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 1

u -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 2

i -> lcnt++, vcnt = 0 => vcnt = 0, lcnt = 3

 

다음 if문에서 lcnt == 3이므로 flag = 1이 되고,

flag = 1일 때는 not acceptable 출력.

이게 맞나요???

답변 1

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 ㅎㅎ

예 수강생님 말씀이 맞습니다.

디버깅 코드를 넣어봤는데요. 이부분 참고부탁드립니다.

출력 :

1 : 0 : 0

2 : 0 : 0

0 : 1 : 0

0 : 2 : 0

0 : 3 : 1

<ptoui> is not acceptable.

#include <bits/stdc++.h>
using namespace std;  
string s; 
int lcnt, vcnt; 
bool isVowel(int idx){
	return (idx == 'a' || idx == 'e' || idx == 'i' || idx == 'o' || idx == 'u');
}
int main () { 
	while(true){
		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(isVowel(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;
			} 
			cout << vcnt << " : " << lcnt << " : " << flag << "\n";
			prev = idx;
		}  
		if(is_include_v == 0) flag = 1;
		if(flag) cout << "<" << s << ">" << " is not acceptable.\n";
		else cout << "<" << s << ">" << " is acceptable.\n";
	} 
	return 0;
}

 


또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


SpRingLJM님의 프로필 이미지
SpRingLJM
질문자

답변해주셔서 감사합니다!

SpRingLJM님의 프로필 이미지
SpRingLJM

작성한 질문수

질문하기