해결된 질문
작성
·
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점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
답변해주셔서 감사합니다!