[프로그래머스/C++]Lv.1 - 옹알이 (2)

YH J·2023년 5월 23일
0

프로그래머스

목록 보기
95/168

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/133499

내 풀이

레벨 0의 옹알이랑 똑같다.
babbling의 원소 하나하나 체크하는데 한글자씩 s에 추가하면서
aya, ye, woo, ma가 완성되는지 체크해서 완성되면 save에 넣어주고 s는 초기화하는데
save에 들어있는 문자와 같다면 (연속 사용) 바로 break한다.
s의 크기가 0이면 ( 단어를 완성해서 초기화 되었다면 ) answer++한다.

내 코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int solution(vector<string> babbling) {
    int answer = 0;
    
    string s = "";
    string save = "";
    for(string b : babbling)
    {
        for(char c : b)
        {
            s += c;
            if(s == "aya" || s == "ye" || s == "woo" || s == "ma")
            {
                if(save == s)
                    break;
                save = s;
                s.clear();
            }
        }
        if(s.size() == 0 )
            answer++;
        s.clear();
        save.clear();
    }
    
    return answer;
}

다른 사람의 풀이

#include <string>
#include <vector>

using namespace std;

int solution(vector<string> babbling)
{
    int answer=0;

    for(string s : babbling)
    {
        int flag=0; bool j=true;
        for(int i=0; i<s.length(); i++)
        {
            if(s.substr(i,3)=="aya" && flag!=1) { flag=1; i+=2; }
            else if(s.substr(i,2)=="ma" && flag!=2) { flag=2; i+=1; }
            else if(s.substr(i,3)=="woo" & flag!=3) { flag=3; i+=2; }
            else if(s.substr(i,2)=="ye" && flag!=4) { flag=4; i+=1; }
            else { j=false; break; }
        }
        if(j==true) answer++;
    }

    return answer;
}

다른 사람의 풀이 해석

내꺼와 비슷한거 말고 다른 풀이를 가져왔다.
babbling 원소를 파싱할 때 알파벳 하나씩 분해하는게 아닌 substr사용하여 범위로 파싱해서 체크하였다.

profile
게임 개발자 지망생

0개의 댓글