수박수박수박수박수박수?

KSang·2023년 12월 1일
0

[Kotlin]코드카타

목록 보기
30/100

🕵️문제설명

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

⚠️제한조건

n은 길이 10,000이하인 자연수입니다.

🤔 알고리즘 생각해보기

2가지 방법이 생각난다

첫째는 반복문을 생성해서 문자를 계속 집어넣고

조건문을 응용해 홀수번째면 "수"를 짝수번째면 "박"을 문자열에 계속넣어서 리턴하면 될것 같다

둘째론 "수박"이라는 문자의 패턴을 반복해준뒤 입력값이 홀수면 끝에 "수"를 추가해주면 될것

🔎 진행 과정

📌반복문으로 계속 추가해주는 방법

반복문을 생성해서 문자를 계속 집어넣고

조건문을 응용해 홀수번째면 "수"를 짝수번째면 "박"을 문자열에 계속넣기

main

fun main() {
    println("길이를 입력해주세요")
    val input = readln().toInt()
    if (input < 1){
        println("길이는 1이상 이어야 합니다")
    }else if (input > 10000){
        println("문자의 길이가 너무 깁니다")
    }
    println("${solution(input)}")
}

solution

fun solution(n: Int): String {
    var answer = ""
    var i = 1

    while (i <= n){
        when (i % 2){
            1 -> answer += "수"
            0 -> answer += "박"
        }
        i++
    }

    return answer
}

홀수번째엔 수 짝수번째엔 박 문자를 추가해주고 리턴

📌패턴을 이용하는 방법

solution

fun solution(n: Int): String {
    val pattern = "수박"
    val repeat = pattern.repeat(n/2)
    var answer = when(n%2){
        1-> repeat + "수"
        0-> repeat
        else -> ""
    }

    return answer
}

"수박" 패턴을 만들고 패턴을 반복하는 문자열을 만든다

수박은 2글자니 입력받은 값에서 2를 나눠준것

입력한값이 홀수일땐 "수"문자를 추가해서 리턴한다

📌최종 결과

package com.example.codekata

fun main() {
    println("길이를 입력해주세요")
    val input = readln().toInt()
    if (input < 1){
        println("길이는 1이상 이어야 합니다")
    }else if (input > 10000){
        println("문자의 길이가 너무 깁니다")
    }
    println("${solution(input)}")
}

fun solution(n: Int): String {
    val pattern = "수박"
    val repeat = pattern.repeat(n/2)
    var answer = when(n%2){
        1-> repeat + "수"
        0-> repeat
        else -> ""
    }

    return answer
}

0개의 댓글