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

YH·2023년 8월 17일
1

문제

옹알이 (1) : 문제 링크


문제 분석

  • 조카는 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못한다. 문자열 배열 babbling이 매개변수로 주어질 때, 조카가 발음할 수 있는 단어의 개수를 return
  • 이중 for loop을 사용하여, 첫 번째 for loop는 babbling 원소의 수만큼 동작한다. 이때 발음 가능 여부를 판단할 check 라는 int형 변수의 값을 1로 초기화 한다.
  • 두 번째 for loop는 각 원소의 길이만큼 동작하고, substr() 함수를 사용하여 "aya", "ye", "woo", "ma"를 발견하면 그 길이만큼 index를 뒤로 이동한다. 검사 중 발음하지 못하는 단어를 발견하면 check를 0으로 초기화하고 for loop를 탈출하고, check가 1일 경우 answer을 1씩 늘린다. 최종적으로 저장된 answer을 return

substr() 함수 사용법
1. substr(시작인덱스, 문자열 길이)
=> 시작인덱스 부터 주어진 문자열 길이만큼 추출
2. substr(시작인덱스)
=> 시작인덱스 부터 문자열 끝까지 추출


풀이

#include <string>
#include <vector>

using namespace std;

int solution(vector<string> babbling) {
    int answer = 0;
    
    for(int i = 0; i < babbling.size(); i++) {
        int check = 1;
        for(int j = 0; j < babbling[i].size(); j++) {
            if(babbling[i].substr(j,3)=="aya") j += 2;
            else if(babbling[i].substr(j,2) == "ye") j += 1;
            else if(babbling[i].substr(j,3) == "woo") j += 2;
            else if(babbling[i].substr(j,2) == "ma") j += 1;
            else {
                check = 0;
                break;
            }
        }
        if(check == 1) answer++;
    }
    return answer;
}
profile
Keep Recycling Your Dreams

0개의 댓글