해결된 질문
작성
·
176
·
수정됨
1
다음과 같이 선생님 코드를 참고하여 구현했는데 어디서 틀렸는지 모르겠습니다.
http://boj.kr/ff14d895e1de44258e860f9df1dc81d9
그리고 수업을 들을 때 문제 풀이가 감도 안잡히면 해설을 조금 보고 풀이를 해본 다음에 그래도 안되면 코드를 참고해서 구현하는데 이런 방식으로 들어도 될까요?
답변 1
1
안녕하세요 도날드님 ㅎㅎ
도날드님이 거의 다 잘 짜셨지만 s[i]는 char로 받는게 좋고 i > 1이케 되면 1번째 인덱스는 받지 못하는 등의 작은 실수가 있었습니다.
제가 좀 다듬어 봤습니다. 참고부탁드립니다.
#include<bits/stdc++.h>
using namespace std;
string s;
int lcnt, vcnt;
bool is_include_v;
bool isVowel(char ch) {
return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
}
int main() {
while(true) {
cin >> s;
if(s == "end")
break;
lcnt = 0;
vcnt = 0;
is_include_v = false;
bool flag = true;
char prevChar = 0;
for(int i = 0; i < s.length(); i++) {
char currentChar = s[i];
if(isVowel(currentChar)) {
vcnt++;
lcnt = 0;
is_include_v = true;
}
else {
lcnt++;
vcnt = 0;
}
if(vcnt == 3 || lcnt == 3)
flag = false;
if(prevChar == currentChar && currentChar != 'e' && currentChar != 'o')
flag = false;
prevChar = currentChar;
}
if(!is_include_v)
flag = false;
if(flag)
cout << "<" << s << "> is acceptable.\n";
else
cout << "<" << s << "> is not acceptable.\n";
}
}
그리고 수업을 들을 때 문제 풀이가 감도 안잡히면 해설을 조금 보고 풀이를 해본 다음에 그래도 안되면 코드를 참고해서 구현하는데 이런 방식으로 들어도 될까요?
>> 스스로 문제 풀이 -> 강의 -> 해설 코드 이렇게 보시는게 좋습니다.
해설강의가 이해가 안되면 질문주시면 더 자세히 설명드리겠습니다.
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.