>알고리즘 문제
1. 문제 설명

2. 솔루션
class Solution {
fun solution(s: String): Int {
var answer: Int = 0
answer=sep(s)
return answer
}
fun sep(s:String):Int{
//1.문자 하나만 남은 경우
if(s.length==1){
return 1
}
var first=1
var others=0
var fChar=s[0]
var idx=1
while(first!=others&&idx<s.length){
if(s[idx]!=fChar){
others++
}
else{
first++
}
idx++
}
//2. 안 잘리고 끝까지 읽는 경우
if(idx==s.length){
return 1
}
//3. 중간에 잘리는 경우
return 1+sep(s.substring(idx))
}
}
1)재귀함수를 이용
2)while문을 이용해 문자열 분해: 문제에서 제시된 조건인 첫글자와 같은 문자수와 다른문자수가 같아지는 경우와 끝까지 읽는 경우를 while문의 종료조건으로 둠.
2)세 가지 경우로 나누어 함수 구성
<1>문자 하나만 남은 경우: 더 자를 수 없으므로 종료하며 문자열 개수 1개 추가
=>이후 경우의수는 문자가 최소한 두 개 이상이므로 첫 문자를 읽은 뒤에 while문 시작
<2>안 잘리고 끝까지 읽는 경우: 이 또한 더 이상 자를 수 없으므로 종료하며 문자열 개수 1개 추가
<3>중간에 잘리는 경우: 잘려나간 문자열이 존재하므로 문자열 개수 1을 더하고 남은 문자열로 다시 함수 실행
'코틀린-안드로이드' 카테고리의 다른 글
8일차)알고리즘 문제(둘만의 암호), 코틀린 문법(람다 함수,고차함수) (0) | 2024.05.30 |
---|---|
7일차)알고리즘 문제(대충 만든 자판), git&github-1회차 (0) | 2024.05.29 |
5일차)알고리즘 문제(체육복,숫자짝꿍), 코틀린 문법 (0) | 2024.05.27 |
4일차)코틀린 문법 - 4 (0) | 2024.05.16 |
3일차) 코틀린 문법-3 (0) | 2024.04.05 |