옹알이 (2)
문자열 배열에서 해당 요소를 특정 문자열들로 만들수있다면 카운트해준다.
단순히 겹치는 문자열만 체크하면 쉽게 풀릴 줄 알았지만 문제는 연속된 문자는 제외해야 했다.
나의 풀이
class Solution {
fun solution(babbling: Array<String>): Int {
var answer: Int = 0
for ( i in babbling){
var temp = i
temp = temp.replace("aya", "")
temp = temp.replace("ye", "")
temp = temp.replace("woo", "")
temp = temp.replace("ma", "")
if(temp == ""){
answer++
}
println(temp)
}
return answer
}
}
연속된 문자열을 체크해주어야 해서 수정
class Solution {
fun solution(babbling: Array<String>): Int {
var answer: Int = 0
for ( i in babbling){
var temp = i
var count = 0
temp = temp.replace("aya", "1")
temp = temp.replace("ye", "2")
temp = temp.replace("woo", "3")
temp = temp.replace("ma", "4")
for( j in 0..temp.length-2){
if( temp[j] == temp[j+1]){
count = 1
}
}
temp = temp.replace("1", "")
temp = temp.replace("2", "")
temp = temp.replace("3", "")
temp = temp.replace("4", "")
if(temp == "" && count == 0){
answer++
}
}
return answer
}
}
문자열의 현재 인덱스와 다음 인덱스와 같은지 비교해 같으면 연속된 문자열로 판단해 제외 시키는 부분 추가
다른사람의 풀이
class Solution {
fun solution(babbling: Array<String>): Int {
var answer: Int = 0
var regex = "aya|ye|woo|ma".toRegex()
var regexC = "ayaaya|yeye|woowoo|mama".toRegex()
answer = babbling
.map{it.replace(regexC,"*")}
.map{it.replace(regex,"")}
.filter { it =="" }
.size
return answer
}
}