728x90
근래 들어 푼 문제 중에 가장 어려운 것 같다. 그래서 못 풀었다.
정답을 보고 보니 내가 문제 이해력이 딸려서 못푼것 같다는 느낌도 들었지만,
이 문제의 핵심은 정규식 ( toRegex() ) 에 대해서 공부를 했느냐 안했느냐 가 핵심인 것 같다.
정규식에 대해서 잘 설명해 주신 것 같다.
https://yoon-dailylife.tistory.com/113
두 가지 풀이법이 코드만 봐도 알 수 있게 잘 풀으신 것 같다.
첫 번째 풀이법.
private fun solution2(babbling: Array<String>) =
babbling.count { it.matches("^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$".toRegex()) }
count{} 와 matches() 를 사용하여 풀으셨다.
^ 는 시작 $ 는 끝이라는 뜻 이었다. 위의 게시물을 보고 오면 이해가 좀 더 쉽다.
두 번째 풀이법.
private fun solution3(babbling: Array<String>): Int {
val regex = "aya|ye|woo|ma".toRegex()
return babbling.map { it.replace(regex, "") }.count { it.isEmpty() }
}
map{} , replace() , count{} 를 사용하여 풀으셨다.
정답을 알고나면 쉬워보이는데 문제 이해를 못한 것 + toRegex() 에 대해 모른 것이 못 푼 이유인 것 같다.
두 분다 대단.
'알고리즘' 카테고리의 다른 글
[코딩 테스트] Level. 1 푸드파이터 개최 (0) | 2023.05.17 |
---|---|
[코딩 테스트] Level. 1 햄버거 만들기 (kotlin,코틀린) (0) | 2023.05.16 |
[코딩테스트] Level. 1 숫자 짝꿍 (kotlin,코틀린) (0) | 2023.04.22 |
[코딩테스트] Level. 1 내적 Kotlin (0) | 2023.03.28 |
[코딩 테스트] Level. 1 크레인 인형뽑기 게임 (Kotlin) (0) | 2023.03.21 |