달달한 스토리

728x90
반응형

출처 핀터레스트

 

오늘의 코딩 테스트는 두 문제를 풀어보았다.

 

과일 장수

//과일 장수
class Fruiterer {
    fun solution(k: Int, m: Int, score: IntArray): Int {
        var sum = 0

        score.sortedArrayDescending().also { arr ->
            repeat(arr.size / m) { i ->

                val start = i * m
                val end = start + m

                arr.copyOfRange(start, end).also { copy ->
                    sum += (copy.minOrNull() ?: 1) * m
                }
            }
        }
        return sum
    }
}

 

오름차순을 배열을 정렬하고,

 

상자에 담을 수 있는 양을 m으로 나누어,

 

상자에서 제일 낮은 품종의 사과를 m을 곱해

 

sum에 합하여 계산한다.

 

 

옹아리 (2)

 

//옹아리 (2)
class Babbling2 {
    fun solution(babbling: Array<String>): Int {
        //할수 있는 발음
        val babblingBabyCan = arrayOf("aya", "ye", "woo", "ma")

        val sb = StringBuilder()

        var cnt = 0

        babbling.forEach { bab ->
            sb.append(bab)
            for(canBab in babblingBabyCan) {

                //만약 같은 발음 연속으로 되면 그건 해당 안됨
                if(sb.contains(Regex("$canBab$canBab"))) {
                    break
                }

                //이렇게 둔 이유는 replace 과정 중에 myea 같이
                //ye를 먼저 지우고, 그 사이가 없어져 ma도 같이 없어지는 경우를 방지하기
                //위해서이다.
                replace(sb, canBab, " ")
            }

            //위해서 주었던 띄어쓰기를 빈칸으로 바꾼다.
            replace(sb, " ", "")

            if(sb.toString() == "") {
                cnt++
            }
            sb.clear()
        }
        return cnt
    }

    private fun replace(sb: StringBuilder, old: String, new: String) = sb.replace(0, sb.length, sb.toString().replace(old, new))

}

 

그렇게 어렵게 풀진 않았다.

 

애기가 할 수 있는 발음을 미리 배열에 지정해두고,

 

같은 발음이 연속으로 되는 경우를 제외하고,

 

포함된 부분이 있으면, replace로 제거하여,

 

결과 값이 빈칸이면 카운팅 해서 반환하게 코드를 구성하였다.

 

 

728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading