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

donald010님의 프로필 이미지
donald010

작성한 질문수

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

2-H

반례를 못찾겠습니다.

해결된 질문

작성

·

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점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


donald010님의 프로필 이미지
donald010

작성한 질문수

질문하기