관리 메뉴

나만을 위한 블로그

[Algorithm] 프로그래머스 - 가위바위보 (Kotlin) 본문

알고리즘 문제 풀이/프로그래머스

[Algorithm] 프로그래머스 - 가위바위보 (Kotlin)

참깨빵위에참깨빵_ 2022. 12. 26. 18:53
728x90
반응형
가위는 2, 바위는 0, 보는 5로 표현한다. 가위바위보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위바위보를 모두 이기는 경우를 순서대로 나타낸 문자열을 리턴하는 solution()을 완성하라

 

 

각 상성에 따라서 이길 수 있는 숫자를 문자열로 만든 뒤 이어붙여서 리턴하면 된다.

아래는 주먹구구식 풀이다.

 

class Solution {
    fun solution(rsp: String): String {
        val list = rsp.split("")
        val s = StringBuilder()
        for (i in list) {
            when (i) {
                "2" -> s.append("0")
                "0" -> s.append("5")
                "5" -> s.append("2")
            }
        }

        return s.toString()
    }
}

 

여기서 StringBuilder와 for문을 없애는 형태로 줄여봤더니 이런 코드가 나왔다.

 

class Solution {
    fun solution(rsp: String) = rsp.split("").map {
        when (it) {
            "2" -> "0"
            "0" -> "5"
            "5" -> "2"
            else -> ""
        }
    }.joinToString("")
}

 

위 코드를 IDE에서 작성하면 아래와 같은 권장 문구가 표시되면서 map {}을 없애고 joinToString() {}을 사용한 코드로 바꿔준다.

Call chain on collection type may be simplified
컬렉션 타입의 콜 체인이 단순화될 수 있다

 

class Solution {
    fun solution(rsp: String) = rsp.split("").joinToString("") {
        when (it) {
            "2" -> "0"
            "0" -> "5"
            "5" -> "2"
            else -> ""
        }
    }
}

 

반응형
Comments