본문 바로가기
Kotlin/Exercise

Raindrop - 숫자를 문자열로 변환하기

by 봄석 2019. 2. 23.

Raindrop - 숫자를 문자열로 변환하기


  • 번호가 3 인 경우 'Pling'을 출력하십시오.
  • 숫자가 5 인 경우 'Plang'을 출력하십시오.
  • 숫자가 7 인 경우 'Plong'을 출력하십시오.
  • 숫자에 3, 5 또는 7이없는 경우 숫자의 자릿수를 똑바로 전달하십시오.

예제들

  • 28의 요인은 1, 2, 4, 7 , 14, 28입니다.
    • 빗방울 - 말로, 이것은 단순한 "플롱 (Plong)"이 될 것입니다.
  • 30의 요인은 1, 2, 3 , 5 , 6, 10, 15, 30입니다.
    • 빗방울 - 말로, 이것은 "PlingPlang"이 될 것입니다.
  • 34는 4 가지 요소, 즉 1, 2, 17 및 34가 있습니다.
    • 빗방울이 말하면, 이것은 "34"가 될 것입니다.
b


testcode
@RunWith(Parameterized::class)
class RaindropsTest(val input: Int, val expectedOutput: String) {
 
    companion object {
        @JvmStatic
        @Parameterized.Parameters(name = "{index}: raindrops({0})={1}")
        fun data() = listOf(
            arrayOf(1"1"),
            arrayOf(3"Pling"),
            arrayOf(5"Plang"),
            arrayOf(7"Plong"),
            arrayOf(6"Pling"),
            arrayOf(8"8"),
            arrayOf(9"Pling"),
            arrayOf(10"Plang"),
            arrayOf(14"Plong"),
            arrayOf(15"PlingPlang"),
            arrayOf(21"PlingPlong"),
            arrayOf(25"Plang"),
            arrayOf(27"Pling"),
            arrayOf(35"PlangPlong"),
            arrayOf(49"Plong"),
            arrayOf(52"52"),
            arrayOf(105"PlingPlangPlong"),
            arrayOf(3125"Plang")
        )
    }
 
    @Test
    fun test() {
        assertEquals(expectedOutput, Raindrops.convert(input))
    }
}



@RunWith(Parameterized::class)

-커스텀 러너 Parameterized는 매개 변수화 된 테스트를 구현합니다. 매개 변수화 된 테스트 클래스를 실행할 때 테스트 메소드와 테스트 데이터 요소의 외적에 대해 인스턴스가 작성됩니다.


@Parameterized.Parameters(name = "{index}: raindrops({0})={1}")

 - 테스트 클래스 생성자에 주입 할 매개 변수를 제공하는 메소드에 대한 주석

class RaindropsTest(val input: Int, val expectedOutput: String) {

클래스의 생성자가 위와 같을때 

//생성자 int ({0}) 와 string{1}을 을 아래와 같이 
 @Parameterized.Parameters(name = "{index}: raindrops({0})={1}")
        fun data() = listOf(
            arrayOf(1"1"),
            arrayOf(3"Pling"),
            arrayOf(5"Plang"),
            arrayOf(7"Plong"),
            arrayOf(6"Pling"),
            arrayOf(8"8"),
            arrayOf(9"Pling"),
            arrayOf(10"Plang"),
            arrayOf(14"Plong"),
            arrayOf(15"PlingPlang"),
            arrayOf(21"PlingPlong"),
            arrayOf(25"Plang"),
            arrayOf(27"Pling"),
            arrayOf(35"PlangPlong"),
            arrayOf(49"Plong"),
            arrayOf(52"52"),
            arrayOf(105"PlingPlangPlong"),
            arrayOf(3125"Plang")
        )




1.내부 str변수에 더해주기

object Raindrops {
    fun convert(input: Int): String {
        var str = ""
        if (input % 3 == 0)
            str += "Pling"
        if (input % 5 == 0)
            str += "Plang"
        if (input % 7 == 0)
            str += "Plong"
        if (str=="")
            str += input.toString()
        return str
    }
}


str에 +=연산자로 계속하여 더해주기


2. 리턴값에 함수선언(buildString)하여 리턴

object Raindrops {
    fun convert(num: Int): String = buildString {
        if (num % 3 == 0) append("Pling")
        if (num % 5 == 0) append("Plang")
        if (num % 7 == 0) append("Plong")
        if (isEmpty()) append(num)
    }
}


buildString

inline fun buildString(
    builderAction: StringBuilder.() -> Unit
)String

제공된 builderAction을 사용하여 새로 작성한 StringBuilder 를 채우고 String으로 변환 하여 새 문자열을 작성 합니다.




테스트결과 출력 형태



'Kotlin > Exercise' 카테고리의 다른 글

윤년 찾기  (4) 2019.03.03
Hamming -DNA 차이  (2) 2019.03.03
영어에서 돼지 라틴어로 번역하기  (2) 2019.02.24
Isogram인지아닌지 판단하기  (2) 2019.02.24
Pangram인지 판단하기  (4) 2019.02.23

댓글