프로그래머스 알고리즘 Level 1 코틀린 문자열 나누기

2023. 1. 23. 15:03알고리즘/문제

https://school.programmers.co.kr/learn/courses/30/lessons/140108

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

class Solution {
    fun solution(s: String): Int {
        var answer: Int = 0
        var str = s
        while (str.isNotEmpty()) {
            var sCnt = 1
            var oCnt = 0
            for (i in 1 until str.length) {
                if (str.elementAt(0) == str.elementAt(i)) sCnt++ else oCnt++
                if (sCnt == oCnt) break
            }
            str = str.substring(sCnt + oCnt)
            answer++
        }
        return answer
    }
}

함수형으로 풀 수 없나 고민을 했지만 하지 못했다.

반복문을 이용해 문자열을 잘라가면서 반복했다.

"banana" 이면 b a 를 count 하고 컷 

nana 는 n a count 하고 컷

다음도 동일

"abracadabra"  는 a b   a 기준으로 1 b 1 같으니까 컷

"racadabra" 는 r a  r 1개 a 1개 같으니까 컷

 

핵심은 2중 for문에 반복하는 문자열의 시작 elementAt(0)과 elementAt(i)의 비교

그리고 문자열 자르기 

이 정도가 키포인트 아닐까 생각한다.

끝.