본문 바로가기

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

@ansi.2024. 2. 24. 15:37

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Lv. 1


  1. babbling의 문자열 s를 순회하며 s를 앞에서부터 3자리, 2자리 문자열로 잘라서 각각 s1, s2에 저장한다.
  2. s1 또는 s2이 발음할 수 있는 문자열("aya", "ye", "woo", "ma")인지 검사한다. 
    • s1 또는 s2가 발음할 수 있는 문자열이고 이전에 나왔던 발음이 아니라면 flag(이전에 나왔던 발음) 변수에 현재 문자열을 저장하고, 문자열 s에서 s1 또는 s2를 자른다.
    • s1 또는 s2가 발음할 수 없는 문자열이라면 반복문에서 빠져나온다.
  3. 위의 과정을 babbling의 모든 문자열 s에 대해 s의 길이가 0이 될 때까지 반복한다.
#include <string>
#include <vector>

using namespace std;

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

    for (string s : babbling) {
        string flag = ""; // 이전에 나온 발음

        while (s.size() > 0) {
            string s1 = s.substr(0, 3);
            string s2 = s.substr(0, 2);

            if ((s1 == "aya" || s1 == "woo") && flag != s1) {
                flag = s1;
                s = s.substr(3);
                continue;
            } else if ((s2 == "ye" || s2 == "ma") && flag != s2) {
                flag = s2;
                s = s.substr(2);
                continue;
            } else {
                break;
            }
        }

        if (s.size() == 0)
            answer++;
    }

    return answer;
}
ansi.
@ansi. :: 공부 기록 공간 🌟

공부한 걸 기록합니다.

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차