본문 바로가기
알고리즘

[코딩 테스트] Level. 1 푸드파이터 개최

by 개발_블로그 2023. 5. 17.
반응형

 

 

나의 문제 풀이법 

 

private fun solution(food: IntArray): String {
    var answer= ""
    val a = ArrayList<String>()

    food.forEachIndexed { index, i ->
        if (index != 0) {
            if (i % 2 == 0) {
                repeat(i / 2) {
                    a.add(index.toString())
                }

            } else { 
                repeat((i - 1) / 2) {
                    a.add(index.toString())
                }   
            }
        }
    }
    val b = a.reversed()
    val result = a + "0" + b
    answer = result.joinToString("")
    return answer
}

forEachIndexed{}, repeat() , joinToString() 을 사용하여 풀었다.  

근데 테스트 시간이 오래걸린 걸 보면 그렇게 좋은 코드는 아닌것 같다.

가독성 또한 떨어지고 지금 보니까 forEachIndexed{} 를 쓸데없이 쓴 것 같다. 

 

 

다른 분의 풀이.

 

class Solution {
    fun solution(food: IntArray): String {
        val sb = StringBuilder()
        for (i in 1..food.lastIndex) {
            repeat(food[i] / 2) { sb.append(i) }
        }
        val reversed = sb.reversed()
        sb.append(0)
        sb.append(reversed)
        return sb.toString()
    }
}​

StringBuilder() , repeat() 사용하여 풀었다. 

 

StringBuilder() 를 많이 써본적이 없고 생각을 많이 안해봤었는데 앞으로 익숙해지면 편리할 것 같다는 생각이 든다.

반응형