[Programmers / Level1] 133499. 옹알이(2)(Java)

이하얀·2024년 8월 16일
0

🕊️ 프로그래머스

목록 보기
29/43

💡 Info




입출력 조건




입출력 예시




문제 이해


  • 주어진 문자열과 기준 문자열을 비교해 일치하는 것(기준 문자열을 포함하는 것까지)의 개수를 반환하는 문제


알고리즘


풀이 시간 : 11분

  1. babbling[i] 중에서 무시할 발음(2번 이상 연속 발음) continue하기
  2. replace 이용
  • 허용되는 문자인 "aya", "ye", "woo", "ma"를 발견하면 -> " "로 바꾸기
  • 만약 babbling 길이가 0 이면(replace가 끝났다면) -> answer++;
import java.util.*;

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        
        for(int i=0; i<babbling.length; i++){
            if(babbling[i].contains("ayaaya") || babbling[i].contains("yeye") || babbling[i].contains("woowoo") || babbling[i].contains("mama") ){
                continue;
            }
            
            babbling[i] = babbling[i].replace("aya", " ");
            babbling[i] = babbling[i].replace("ye", " ");
            babbling[i] = babbling[i].replace("woo", " ");
            babbling[i] = babbling[i].replace("ma", " ");
            
            if(babbling[i].length() == 0){
                answer++;
            }
        }
        return answer;
    }
}


오답체크


  • 허용되는 문자를 " "로 반환했지만, 빈 경우인 " "를 ""로 replace하지 않아 테스트 실패 발생(대체한 후에 발생한 공백을 제거)
//before
babbling[i] = babbling[i].replace("aya", " ");
babbling[i] = babbling[i].replace("ye", " ");
babbling[i] = babbling[i].replace("woo", " ");
babbling[i] = babbling[i].replace("ma", " ");
//after        
babbling[i] = babbling[i].replace("aya", " ");
babbling[i] = babbling[i].replace("ye", " ");
babbling[i] = babbling[i].replace("woo", " ");
babbling[i] = babbling[i].replace("ma", " ");
babbling[i] = babbling[i].replace(" ", "");
  • 참고 : replace로 바로 비어있지 않은 문자열 ""로 바꾸지 않는 이유
    • 연속된 단어 검출이 불가능해지기 때문
    • ex) 문자열 "ayayeye"가 있다면
      • replace("aya", "")를 통해 "yeye"가 남게 됨 -> 그 다음 replace("ye", "")를 통해 대치하면 빈 문자열이 반환되어 조건 위반


최종 풀이


풀이 시간 : 20분(첫 풀이 시간 포함)

  1. babbling[i] 중에서 무시할 발음(2번 이상 연속 발음) continue하기
  2. replace 이용
  • 허용되는 문자인 "aya", "ye", "woo", "ma"를 발견하면 -> " "로 바꾸기
  • 만약 babbling 길이가 0 이면(replace가 끝났다면) -> answer++;
import java.util.*;

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        
        for(int i=0; i<babbling.length; i++){
            if(babbling[i].contains("ayaaya") || babbling[i].contains("yeye") || babbling[i].contains("woowoo") || babbling[i].contains("mama") ){
                continue;
            }
            
            babbling[i] = babbling[i].replace("aya", " ");
            babbling[i] = babbling[i].replace("ye", " ");
            babbling[i] = babbling[i].replace("woo", " ");
            babbling[i] = babbling[i].replace("ma", " ");
            babbling[i] = babbling[i].replace(" ", "");
            
            if(babbling[i].length() == 0){
                answer++;
            }
        }
        return answer;
    }
}


결과



profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE 개발 기록 노트☘️

0개의 댓글