본문 바로가기

코딩 테스트/Lv.0

[프로그래머스] 옹알이(1) with Kotlin

문제

머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다.

조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다.

문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

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

 

풀이 방법

  1. "aya", "ye", "woo", "ma"의 문자열 배열을 하나 선언  ex)  val words
  2. 매개 변수로 받은 babbling의 각 인덱스 별 문자열(A)을 words의 각 인덱스 별 문자열(B)과 비교
    • 만일 A에 B가 포함되어 있는지
    • 포함되어 있다면 A에서의 B를 "/"로 변경
  3. 마지막 A에서 "/"를 없애주었을 경우, A가 Null 또는 Empty일 경우 answer + 1
  4. 같은 방법으로 그 다음 A 진행

 

코드

개인적인 풀이 코드

class Solution {
    fun solution(babbling: Array<String>): Int {
        var answer: Int = 0
        
        val words = arrayListOf("aya", "ye", "woo", "ma")
        
        for(i in babbling)
        {
            var test: String = i
            
            for(word in words)
            {   
                if(i.contains(word))
                {
                    test = test.replace(word.toRegex(), "/")
                }
            }
            test = test.replace("/".toRegex(), "")
            
            if(test.isNullOrEmpty()) answer += 1
        }
    
        return answer
    }
}