본문 바로가기
코딩테스트/자바 Level 0

[Java] 옹알이(1)

by onggury 2023. 7. 19.

문제

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

 

 

제한사항

  • 1 ≤ babbling 의 길이 ≤ 100
  • 1 ≤ babbling[i] 의 길이 ≤ 15
  • babbling 의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.
    • 즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

 

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        for(String str : babbling) {
            str = str.replace("aya", ".");
            str = str.replace("ye", ".");
            str = str.replace("woo", ".");
            str = str.replace("ma", ".");
            str = str.replace(".", "");
            
            if(str.equals("")) { answer++; }
        }
        return answer;
    }
}

처음에는 네 가지 단어를 빈 문자열("") 로 바꿨는데, 그렇게 되니 "wyeoo" 라는 단어에서 예외사항이 나왔다.

"wyeoo"의 "ye"를 빈 문자열로 바꾸면 "woo"가 되어버리고 이는 네 가지 단어 중 하나이므로 다시 빈 문자열로 변형되어 결과가 빈 문자열이 나온다.

문제는 네 가지 단어를 "이어붙인" 단어라고 했기 때문에 저렇게 되어버리면 안된다.

그래서 다른 특정 문자로 변형 후 그 문자를 빈 문자열로 마지막에 바꾸어 해결했다.

꽤나 씽크빅 하다고 생각했는데 의외로 이렇게 해결한 사람이 많았다.

 

 

출처

https://school.programmers.co.kr/learn/courses/30/lessons/120956