❓ 제목
머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
💡 풀이
class Solution {
fun solution(babbling: Array<String>): Int {
val regx = "^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$".toRegex()
return babbling.count{it.matches(regx)}
}
}
- 정규표현식을 선언해준다.
- count() 메소드를 통해 개수를 센다.
- 정규표현식을 사용할 때 같이 쓰는 메소드 mathces를 통해 babbling안에 일치하는 것이 있는지 확인한다.
정규표현식(Regular Expression)은 문자열 패턴을 정의하는 데 사용되는 강력한 도구로서 특정 문자열 패턴을 검색하거나 추출하는 등의 문자열 처리 작업을 효과적으로 수행할 수 있다.
문제풀이에 대한 설명을 해보자면 문자A(?!문자B)라는 표현은 문자A 다음 문자B가 나오면 안 된다는 뜻이다. ayaaya이런 식으로 연속해서는 안 되기 때문에 같은 글자를 표현해준 것 뿐이다.
정규표현식을 선언하는 방법은 매우 다양하므로 아래 링크를 통해 좀 더 자세히 확인해보자.
정규표현식은 일반적으로 유효 비밀번호를 검사할 때 많이 사용되는 식인데 이런 식으로 코딩테스트 문제로 만나게 될 줄은 몰랐다.
머쓱이가 발음할 수 있는 것들을 따로 배열로 선언하거나 split 등을 통해 풀 수 있는 방법이 다양했지만 정규 표현식을 사용했을 때 가장 편리하고 간단하게 풀 수 있었다.
혼자 생각해낸 것이라면 얼마나 좋으련만!
❗출처
참고 사이트 : https://velog.io/@guysang/%EC%98%B9%EC%95%8C%EC%9D%B4-2
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 성격 유형 검사하기 (Kotlin) (0) | 2024.07.11 |
---|---|
[프로그래머스] 기사단원의 무기 (Kotlin) (0) | 2024.06.24 |
[프로그래머스] 모의고사 (Kotlin) (0) | 2024.06.21 |
[프로그래머스] 행렬의 곱셈 (Kotlin) (0) | 2024.06.20 |
[프로그래머스] 과일 장수 (Kotlin) (0) | 2024.06.18 |