개발자 항해
프로그래머스] 옹알이(2) 본문
문제 설명
머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ babbling의 길이 ≤ 100
- 1 ≤ babbling[i]의 길이 ≤ 30
- 문자열은 알파벳 소문자로만 이루어져 있습니다.
입출력 예babblingresult
["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"를 발음할 수 없기 때문에 할 수 없는 발음입니다.
- 나의 틀린 풀이
일치되는 문자를 ""로 치환하고 isEmpty()로 모두 치환 되었는지 검사함
그런데 "woayao" 같은 문자가 문제가 됨.
aya를 빈칸으로 치환하고 나니 wo와 o가 합쳐져서 woo 형태가 되어버림.
그렇게 변형된 woo를 true로 인식해 버려서 틀린 결과 값이 나왔음.
public class Babbling {
public int solution(String[] babbling) {
int answer = 0;
String[] strarr = {"aya","ye","woo","ma"};
for(int i = 0; i < babbling.length; i++) {
for(int k = 0 ; k < strarr.length; k++) {
// 만약 k번째 문자가 중복시 for문을 나옴.
if(babbling[i].contains(strarr[k]+strarr[k])) {
break;
}
// 중복이 아닐시 공백으로 기준이 되는 문자를 치환함
babbling[i]=babbling[i].replace(strarr[k],"");
}// 두번째 for문
// 만약 babbling[i]가 공백으로 모두 치환 되었다면 answer를 카운트
if(babbling[i].isEmpty()) {
answer++;
}
}//첫번째 for문
return answer;
}// solution괄호
}//Babbing 괄호
- 나의 맞는 풀이
일치하는 것은 숫자 1 로 바꾸고 1과 모두 매치 되는지 검사하는 풀이로 바꿈.
public class Babbling {
public int solution(String[] babbling) {
int answer = 0;
String[] strarr = {"aya","ye","woo","ma"};
for(int i = 0; i < babbling.length; i++) {
for(int k = 0 ; k < strarr.length; k++) {
// 만약 k번째 문자가 중복시 for문을 나옴.
if(babbling[i].contains(strarr[k]+strarr[k])) {
break;
}
// 중복이 아닐시 "1"로 기준이 되는 문자를 치환함
babbling[i]=babbling[i].replace(strarr[k],"1");
}// 두번째 for문
// 만약 babbling[i]가 "1"로 모두 치환 되었다면 answer를 카운트
if(babbling[i].matches("[1]+")) {
answer++;
}
}//첫번째 for문
return answer;
}// solution괄호
}//Babbing 괄호
'Programming > Java-코드업,프로그래머스' 카테고리의 다른 글
프로그래머스] 부족한 금액 계산하기 (0) | 2022.12.29 |
---|---|
프로그래머스] 약수의 개수와 덧셈 (0) | 2022.12.29 |
프로그래머스] 숫자 짝꿍 (2) | 2022.12.16 |
프로그래머스] 과일 장수 (0) | 2022.11.27 |
프로그래머스] 콜라 문제 (0) | 2022.11.25 |