Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 자바 다형성
- android retrofit login
- 플러터 설치 2022
- 안드로이드 유닛테스트란
- 서비스 vs 쓰레드
- 안드로이드 라이선스
- 클래스
- 2022 플러터 설치
- 2022 플러터 안드로이드 스튜디오
- android ar 개발
- 멤버변수
- jvm이란
- 서비스 쓰레드 차이
- 스택 자바 코드
- 안드로이드 레트로핏 crud
- Rxjava Observable
- 객체
- ANR이란
- 안드로이드 라이선스 종류
- 스택 큐 차이
- rxjava cold observable
- 안드로이드 유닛 테스트 예시
- 안드로이드 os 구조
- ar vr 차이
- rxjava hot observable
- 안드로이드 유닛 테스트
- 큐 자바 코드
- jvm 작동 원리
- rxjava disposable
- 안드로이드 레트로핏 사용법
Archives
- Today
- Total
나만을 위한 블로그
[Algorithm] 프로그래머스 - 세 개의 구분자 (Kotlin) 본문
728x90
반응형
myStr에서 a, b, c를 모두 제거해야 하기 때문에 정규식을 사용해서 푸는 법을 생각해볼 수 있다.
class Solution {
fun solution(myStr: String): Array<String> {
val result = myStr.split("[abc]".toRegex()).filter { it.isNotEmpty() }
return if (result.isEmpty()) arrayOf("EMPTY") else result.toTypedArray()
}
}
split()의 결과로 a, b, c를 기준으로 나눈 리스트가 리턴되고 filter를 써서 공백을 제거한다.
공백 제거 후 남는 문자열들이 있는 경우와 아닌 경우 각각 다른 값을 리턴하게 하면 문제는 풀린다.
다른 방법은 정규식을 쓰지 않고 for문과 조건문을 쓰는 것이다. 그리고 최대 100만 개의 문자열을 다루기 때문에 StringBuilder도 같이 사용한다.
class Solution {
fun solution(myStr: String): Array<String> {
val result = mutableListOf<String>()
var temp = StringBuilder()
for (char in myStr) {
if (char == 'a' || char == 'b' || char == 'c') {
if (temp.isNotEmpty()) {
result.add(temp.toString())
temp = StringBuilder()
}
} else {
temp.append(char)
}
}
if (temp.isNotEmpty()) {
result.add(temp.toString())
}
if (result.isEmpty()) {
result.add("EMPTY")
}
return result.toTypedArray()
}
}
반응형
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 빈 배열에 추가, 삭제하기 (Kotlin) (0) | 2024.06.04 |
---|---|
[Algorithm] 프로그래머스 - 배열의 원소만큼 추가하기 (Kotlin) (0) | 2024.06.04 |
[Algorithm] 프로그래머스 - rny_string (Kotlin) (0) | 2024.06.01 |
[Algorithm] 프로그래머스 - 문자열 바꿔서 찾기 (Kotlin) (0) | 2024.06.01 |
[Algorithm] 프로그래머스 - 간단한 식 계산하기 (Kotlin) (0) | 2024.06.01 |
Comments