📝 나의 문제풀이
class Solution {
fun solution(myString: String): Array<String> {
return myString.split("x").filter{ it.isNotEmpty() }.sorted().toTypedArray()
}
}
📝 다른 사람의 문제 풀이
다른 사람의 문제 풀이는 좋아요 수가 높거나 많은 사람들이 푼 방법 기준으로 첨부하였습니다.
class Solution {
fun solution(myString: String) = myString.split("x".toRegex()).filter(String::isNotEmpty).sorted()
}
🖊 문제 풀이 시 알면 좋을 것
split 함수
- 문자열을 특정 구분자 기준으로 나눌 때 사용.
- 예제에서 "x"를 기준으로 나눔.
val str = "axbxc"
val result = str.split("x") // ["a", "b", "c"]
- 정규식을 사용할 때는 .toRegex() 추가.
val result = str.split("x".toRegex()) // 동일 결과
* 위 예시로는 결과가 동일한데 왜 정규식을 사용해? 정규식은 어느 경우에 사용하는 거야??
- 단순한 문자열을 기준으로 나눌 땐 split("x") 사용이 더 간단하고 성능도 좋음.
- 하지만 확장 가능성이 필요한 경우(여러 구분자, 패턴 매칭)엔 정규식을 사용하는 게 더 강력한 도구가 될 수 있어. 문제에 따라 필요에 맞게 선택하면 돼!
정규식을 사용하는 이유: 복잡한 패턴 처리
정규식을 사용하면 단순 구분자를 넘어 다양한 패턴으로 문자열을 나눌 수 있어.
예시 1. 여러 구분자를 한 번에 처리
이 예시에서는 "x"뿐만 아니라 숫자(0-9)도 구분자로 사용.
val str = "a1xb2yc3"
val result = str.split("[x0-9]".toRegex()) // ["a", "b", "c"]
예시 2. 공백 및 여러 문자 처리
여러 구분자(쉼표, 세미콜론, 공백 등)를 한 번에 처리.
val str = "a, b; c d"
val result = str.split("[,;\\s]+".toRegex()) // ["a", "b", "c", "d"]
filter 함수
- 조건을 만족하는 요소만 남길 때 사용.
val list = listOf("", "a", "b", "")
val filtered = list.filter { it.isNotEmpty() } // ["a", "b"]
함수 참조(String::isNotEmpty)로 더 간결하게 작성 가능.
list.filter(String::isNotEmpty)
sorted 함수
- 컬렉션을 오름차순(사전순)으로 정렬.
val list = listOf("banana", "apple", "cherry")
val sorted = list.sorted() // ["apple", "banana", "cherry"]
toTypedArray 함수
- 리스트를 배열로 변환.
val list = listOf("a", "b", "c")
val array = list.toTypedArray() // arrayOf("a", "b", "c")
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 문자열 바꿔서 찾기 (0) | 2025.01.24 |
---|---|
[프로그래머스] 간단한 식 계산하기 (0) | 2025.01.24 |
[프로그래머스] x 사이의 개수 (0) | 2025.01.24 |
[프로그래머스] 공백으로 구분하기 2 (0) | 2025.01.21 |
[프로그래머스] 공백으로 구분하기 1 (0) | 2025.01.21 |