옹알이 (2)

알파로그·2023년 3월 12일
0

✏️ 문제 설명

머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다.
조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고
연속해서 같은 발음을 하는 것을 어려워합니다.
문자열 배열 babbling이 매개변수로 주어질 때,
머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

✏️ 제한 사항

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 30
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

✏️ 문제 풀이

📍 첫번째 풀이 - 실패

먼저 요소 하나하나마다 if 문을 사용해 특정 text 가 포함 되었는지, 중복이 되는지 확인 후
replace 를 사용해 해당 text 를 제거했다.

int answer = 0;
        String[] babbling = {
                "ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"};

        // "aya", "ye", "woo", "ma"
        //---------------------------------------------//

        for (int i =0 ; i< babbling.length ; i++){
                // 발음 가능한 언어를 포함하는지, 같은 발음을 반복하는지 체크후 해당 발음 제거
            if (babbling[i].contains("aya")){
                if (babbling[i].contains("ayaaya")) continue;
                    babbling[i]= babbling[i].replace("aya","");
            }
            if (babbling[i].contains("ye")){
                if (babbling[i].contains("yeye")) continue;
                babbling[i]= babbling[i].replace("ye","");
            }
            if (babbling[i].contains("woo")){
                if (babbling[i].contains("woowoo")) continue;
                babbling[i]= babbling[i].replace("woo","");
            }
            if (babbling[i].contains("ma")){
                if (babbling[i].contains("mama")) continue;
                babbling[i]= babbling[i].replace("ma","");
            }
                // 모든 제거 작업이 끝났을경우 아무 text 가 남지 않는경우에만 1을 추가한다.
            answer += babbling[i].equals("") ? 1:0;
        }


        System.out.println(answer);
}

겉보기에 문제가 없어보여서 임의로 text를 여러가지 넣어보다 실패원인을 찾아냈다.
만약 " y aya e " 라는 요소가 있을경우
aya 가 없어지면 ye 가 남게되서 이것도 정상 text 로 인식되는 문제였다.

📍 두번째 풀이 (성공)

어느 부분이 오류를 만드는지 파악이 되어서 쉽게 코드를 수정할 수 있었다.
모든 replace 에 text를 제거하는게 아니고 분리하기위해 스페이스바로 변환 시켰다.
그 후 마지막에 스페이스바를 전부 제거하는 코드를 넣어 오류를 보완하니 성공했다.

if (babbling[i].contains("ma")){
                if (babbling[i].contains("mama")) continue;
                babbling[i]= babbling[i].replace("ma"," ");
            }
      // 스페이스 바를 지우는 코드 한줄 추가
            babbling[i]= babbling[i].replace(" ","");
            answer += babbling[i].equals("") ? 1:0;

🔗 문제 원본

profile
잘못된 내용 PR 환영

0개의 댓글