https://school.programmers.co.kr/learn/courses/30/lessons/120956#
#include <string>
#include <vector>
using namespace std;
int solution(vector<string> babbling) {
int answer = 0;
for(int i=0; i<babbling.size(); i++){
int len= babbling[i].size();
bool pos=true;
for(int j=0; j<len; j++){
if(babbling[i][j]=='a'){ //"aya"
if((j+2<len)&&babbling[i][j+1]=='y'&&babbling[i][j+2]=='a') {j+=2;}
else{
pos = false;
break;
}
}
else if(babbling[i][j]=='y'){ //"ye"
if((j+1<len)&& babbling[i][j+1]=='e') {j++;}
else{
pos = false;
break;
}
}
else if(babbling[i][j]=='w'){ //"woo"
if((j+2<len)&&babbling[i][j+1]=='o'&&babbling[i][j+2]=='o') {j+=2;}
else{
pos = false;
break;
}
}
else if(babbling[i][j]=='m'){ //"ma"
if((j+1<len)&&babbling[i][j+1]=='a') {j++;}
else{
pos = false;
break;
}
}
else{ //그외 나머지.
pos=false;
break;
}
}
if(pos) answer++;
}
return answer;
}
스트링에서 일일이 하나씩 보면서, 시작이 a y w m 인 경우, 각각이 aya, ye, woo, ma 인지 확인하고, 맞다면 글자 수만큼 넘어가서 다시 체크하는 식으로, 그리고 만약 a, y, w, m 로 시작했는데 해당 글자들이 아닌 경우이거나, 다른 글자로 시작한 경우들은 모두 단어가 불가능하다는 의미로 pos= false로 만들고 건너뛰는 형태로 작성하였다.
다른 사람의 풀이를 보았을때, 정말 각양 각색의 풀이가 있는데, 이중에서 가장 위에 추천을 받은 풀이를 한번 첨부해보겠다.
스트링에 대한 비교를 조금 더 간결하게 할 수 있는 방법으로 작성한 코드인데, 내가 한건 각각의 char 별로 판단하는것이라면, 이 코드의 경우는 string이 aya, ye, woo, ma 인지 확인하는 형태로 작성한 코드이다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<string> babbling) {
int answer = 0;
string temp = "";
string temp2 = "";
for(int i =0; i<babbling.size(); i++)
{
string s = babbling[i];
temp = "";
temp2 = "";
for(int i=0; i<s.size(); i++)
{
temp += s[i];
if(temp == "aya" || temp == "ye" || temp == "woo" || temp == "ma")
{
if(temp == temp2)
break;
else
temp2 = temp;
temp = "";
}
}
if(temp == "")
answer++;
}
return answer;
}
이렇게 작성하면,
if(temp== temp2)
break;
else
temp2=temp;
temp="";
형태를 통해서, 똑같은 단어가 한번 더 나오는 경우의 예외처리를 하는 부분도 존재하면서,
주어진 글자를 개별적으로 temp에 담으면서 그 내용이 "aya" , "ye", "woo", "ma" 인지 string 끼리의 == 를 통해 비교하기 때문에
훨씬 코드를 간결하게 작성할 수 있다.
아주 괜찮은 방법같다.
다음에는 이와 같은 형태로 코드를 작성해보도록 하자. 이렇게 떠올려 보도록 하자.
string 끼리는 == 을 통해서 같은지 아닌지 판별할 수 있다는것을 이해하고 사용해보도록 하자.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
| Lv 0. 치킨 쿠폰. *다시 풀어보기* (0) | 2023.10.11 |
|---|---|
| Lv 0. 로그인 성공? (0) | 2023.10.11 |
| Lv 0. 등수 매기기 *다시 풀어보기* (0) | 2023.10.10 |
| Lv 0. 특이한 정렬. pair에 대한 first와 second 원소에 대한 개별 sort 적용시키기 위한 커스텀 comp 함수를 이용한 sort. *다시 풀어보기* (0) | 2023.10.10 |
| Lv 0. 유한소수 판별하기. *다시 풀어보기* (0) | 2023.10.08 |
