🗒 문제
📝 나의 문제풀이
class Solution {
fun solution(myStr: String): Array<String> {
return myStr.split("[a-c]".toRegex()).filter{ it.isNotEmpty() }.toTypedArray().ifEmpty{ arrayOf("EMPTY") }
}
}
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
class Solution {
fun solution(myStr: String): List<String> {
return myStr.split("[abc]+".toRegex()).filter(String::isNotEmpty).let { it.ifEmpty { listOf("EMPTY") } }
}
}
🖊 문제 풀이 시 알면 좋을 것
split 함수
- split은 문자열을 특정 구분자를 기준으로 나눌 때 사용.
- 정규식을 사용해 범위나 패턴으로 문자열을 나눌 수 있음.
val result = "helloabcworld".split("[a-c]".toRegex()) // ["hello", "world"]
- "a-c"는 a, b, c 중 하나를 의미.
- "[abc]+"는 a, b, c가 연속적으로 나오는 경우 한 번에 구분.
filter로 빈 문자열 제거
- split 결과에서 빈 문자열을 제거하려면 filter 사용.
val result = listOf("", "hello", "", "world").filter { it.isNotEmpty() } // ["hello", "world"]
String::isNotEmpty를 함수 참조로 간결히 작성 가능:
📌 마치며
내 문제풀이에서는 "[a-c]" 사용으로 개별 문자 처리를 하였으나 다른 사람 문제풀이에서는 "[abc]+"로 연속된 문자도 처리하였다.
이를 바탕으로 리스트와 배열 모두 커버할 수 있도록 개선된 코드
class Solution {
fun solution(myStr: String): Array<String> {
return myStr.split("[abc]+".toRegex())
.filter(String::isNotEmpty)
.ifEmpty { listOf("EMPTY") }
.toTypedArray() // 리스트를 배열로 변환
}
}
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 빈 배열에 추가, 삭제하기 (0) | 2025.01.24 |
---|---|
[프로그래머스] 배열의 원소만큼 추가하기 (0) | 2025.01.24 |
[프로그래머스] rny_string (0) | 2025.01.24 |
[프로그래머스] 문자열 바꿔서 찾기 (0) | 2025.01.24 |
[프로그래머스] 간단한 식 계산하기 (0) | 2025.01.24 |