코틀린-안드로이드
6일차)알고리즘 문제(문자열 나누기)
songyooho
2024. 5. 28. 19:24
>알고리즘 문제
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을 더하고 남은 문자열로 다시 함수 실행
