4659 왜 틀렸는지 모르겠습니다!! ㅠㅠㅠ
214
김지수
작성한 질문수 2
0
http://boj.kr/ca60372b1b164eccb71722f04693b65f
안녕하세요 선생님,
4659 비밀번호 발음하기 문제를 열심히 풀었습니다.
하지만 제출한 경우 틀렸다고 나오네요ㅠ 왜그런지 이유를 알고 싶은데 피드백 주시면 감사하겠습니다!!
답변 1
0
안녕하세요. ㅎㅎ 3번 연속 부분에 로직이 잘못된 것같은데요.
주석을 달았으니 확인 부탁드립니다.
#include<iostream>
#include<algorithm>
#include<string>
#include<tuple>
#include<vector>
#include<map>
using namespace std;
string s;
char mo[5] = {'a','e','i','o','u'};
int flag = 0;
// good
/*
모음(a,e,i,o,u) 하나를 반드시 포함하여야 한다.
모음이 3개 혹은 자음이 3개 연속으로 오면 안 된다.
같은 글자가 연속적으로 두번 오면 안되나, ee 와 oo는 허용한다.
*/
int test1(){
int haveMo = 0;
for(int i=0; i<5; i++)
if(s.find(mo[i])!=string::npos){
haveMo = 1;
break;
}
return haveMo;
}
int checkMo(char a){
if(a==101||a==105||a==111||a==117||a==121) return 1;
return 0;
}
int test2(){
int triple = 0; int flag = 0; //if char is mo, flag is 1.
if(s.size()<3) return 0;
char prev = s[0];
flag = checkMo(prev);
triple++;
for(int i=1; i<s.size()&&triple<3; i++){
char now = s[i];
if(checkMo(now)==flag){
triple++;
prev = now;
}
else{
triple = 1;
flag = !flag;
prev = now;
}
}
//이걸 왜 여기서 확인하죠?
if(triple>=3) return 1;
else return 0;
}
// good
int test3(){
int twice = 0;
if(s.size()<2) return 0;
char prev = s[0];
for(int i=1; i<s.size()&&!twice; i++){
char now = s[i];
if(prev==now){
if(prev=='e'||prev=='o') continue;
else
twice = 1;
}
else {
prev = now;
}
}
return twice;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
while(1){
cin >> s;
flag = 0;
if(s=="end") break;
for(int i=0; i<3&&!flag; i++){
if(i==0) flag = !test1();
else if(i==1) flag = test2();
else if(i==2) flag = test3();
}
if(flag) cout<<"<"<<s<<"> is not acceptable.\n";
else cout<<"<"<<s<<"> is acceptable.\n";
}
return 0;
}
1-E질문입니다!
0
533
2
3-L 틀린 부분 피드백 부탁드립니다.
0
835
2
1-A문제 순열재귀함수 질문입니다.
0
396
1
1-A 일곱난쟁이문제입니다
0
470
1
문제 풀 때 방향성에 대해
0
810
1
맥에서 vs code로 실행 관련 질문입니다
0
530
1
17071번 메모리 초과
0
390
1
1-C질문입니다!
0
428
2
2-B BFS 시간초과질문
0
638
2
1-O 13번 라인
0
447
1
6-J 놀이공원 문제 질문
0
389
1
구현관련 질문
0
491
1
강의 교안
0
322
1
실력을 더 올리고나서 강의를 보는 것이 맞을까요?
0
550
1
안녕하세요! 재귀함수에 관해서 질문드립니다
0
540
1
1-K
0
481
2
3-G번 질문있습니다.
1
480
3
3-C 실행 시간 질문드립니다.
0
503
1
4-A 문제 풀이 질문있습니다.
0
601
2
비트마스킹 연산자 "1의 보수" 영문 표기법
0
441
1
격자탐색 문제에서 BFS 시간복잡도 질문드립니다.
0
349
1
3-O go 함수 질문 드립니다.
1
453
2
4-A 출력 질문
0
308
1
1주차 1-O 질문드립니다
0
266
1





