- pytorch
- C
- Java
- datastructure
- cloud_computing
- Operating_System
- 자격증
- app
- Android
- tensorflow
- Personal_Study
- Image_classification
- Database_Design
- c++
- Univ._Study
- Baekjoon
- Linux
- study
- SingleProject
- Python
- 리눅스마스터2급
- programmers
- 2023_1st_Semester
- Kubernetes
- Algorithm
- 티스토리챌린지
- 오블완
- codingTest
- Unix_System
- Artificial_Intelligence
코딩 기록 저장소
[프로그래머스/C++] 옹알이 (2) 본문
문제 정보
제목 : 옹알이 (2)
난이도 : Lv.1
사용 언어 : C++
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/133499
문제 설명
머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
제한 사항
- 1 ≤ babbling의 길이 ≤ 100
- 1 ≤ babbling[i]의 길이 ≤ 30
- 문자열은 알파벳 소문자로만 이루어져 있습니다.
입출력 예
babbling | result |
["aya", "yee", "u", "maa"] | 1 |
["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"] | 2 |
입출력 예 설명
입출력 예 #1
- ["aya", "yee", "u", "maa"]에서 발음할 수 있는 것은 "aya"뿐입니다. 따라서 1을 return합니다.
입출력 예 #2
- ["ayaye", "uuuma", "yeye", "yemawoo", "ayaayaa"]에서 발음할 수 있는 것은 "aya" + "ye" = "ayaye", "ye" + "ma" + "woo" = "yemawoo"로 2개입니다. "yeye"는 같은 발음이 연속되므로 발음할 수 없습니다. 따라서 2를 return합니다.
유의사항
- 네 가지를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없는 것으로 규정합니다. 예를 들어 "woowo"는 "woo"는 발음할 수 있지만 "wo"를 발음할 수 없기 때문에 할 수 없는 발음입니다.
나의 풀이
babbling의 길이만큼 반복하는 for문을 생성합니다. 그리고 i가 1씩 증가할때마다 check변수는 false로 저장하고, first, fb 문자열형 변수는 비어있도록 만들어 줍니다. babbling[i]의 길이만큼 반복하는 for문을 하나 생성하여 하나씩 비교합니다. 연속해서 같은 발음을 하는지 체크하기 위해 fb변수에는 babbling[i][j] 문자를 저장합니다. 그리고 if - else if - else문을 이용하여 조건을 통해 체크합니다. 문자열의 substr함수를 이용하여 인덱스 0부터 아기 발음의 길이만큼 잘라 비교하고 and문을 통해 first변수와 fb변수가 다르다면 참으로 실행합니다. j는 발음 길이만큼 증가되고, first변수에는 fb값이 들어가 이전에 했던 발음을 저장할 수 있도록 했습니다. 만약 조건에 일치하지않아 발음을 하지 못한다면 check 변수를 ture로 바꾸어줍니다.
만약 check변수가 참이 아니라면 answer변수에 1을 증가시켜 발음 가능한 개수를 카운트 합니다.
코드
#include <string>
#include <vector>
using namespace std;
int solution(vector<string> babbling) {
int answer=0;
for(int i=0; i<babbling.size(); i++){
bool check=false;
string first = "";
string fb = "";
for(int j=0; j<babbling[i].size(); j++){
fb = babbling[i][j];
if(babbling[i].substr(j,3) == "aya" && first != fb)
{
j+=2;
first = fb;
}
else if (babbling[i].substr(j,2) == "ye" && first != fb)
{
j+=1;
first = fb;
}
else if (babbling[i].substr(j,3) == "woo" && first != fb)
{
j+=2;
first = fb;
}
else if (babbling[i].substr(j,2) == "ma" && first != fb)
{
j+=1;
first = fb;
}
else check = true;
}
if (!check)
answer++;
}
return answer;
}
'프로그래머스 > Lv.1' 카테고리의 다른 글
[프로그래머스/C++] 신고 결과 받기 (0) | 2023.01.17 |
---|---|
[프로그래머스/C++] 성격 유형 검사하기 (0) | 2023.01.17 |
[프로그래머스/C++] 신규 아이디 추천 (0) | 2023.01.16 |
[프로그래머스/C++] 기사단원의 무기 (0) | 2023.01.16 |
[프로그래머스/C++] 키패드 누르기 (0) | 2023.01.16 |