Dev/Algorithm

간만의 알고리즘 공부 - 19 (직사각형 별찍기)

healthyryu 2024. 7. 21. 23:05
문제 설명
이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

제한 조건
- n과 m은 각각 1000 이하인 자연수입니다.

 

입출력 예시

 

 

내가 푼 방법

fun main(args: Array<String>) {
    val (a, b) = readLine()!!.split(' ').map(String::toInt)
    
    val strBuild = StringBuilder()
    for (i in 0 until b) {    
        for (j in 0 until a) {
            strBuild.append('*')
        }
        println(strBuild.toString())
        strBuild.clear()
    }
    
}

 

점수가 1점 얻었습니다. 시간이 많이 걸린것 같아서 어떻게 더 효율적으로 할지 다른 분들의 코드를 둘러봤습니다. 그러나 크게 효과적인 방법은 보이지 않았습니다. 그래서 코드 첨삭을 받아왔습니다

 

코드 첨삭

fun main(args: Array<String>) {
    val (a, b) = readLine()!!.split(' ').map(String::toInt)
    
    val starLine = "*".repeat(a)
    
    for (i in 0 until b) {
        println(starLine)
    }
    
}

 

코드 첨삭의 코드도 시간적인 측면에서 크게 향상되지는 않았지만, for() 문을 2번 돌리는것보단 좀 더 이해하기 편리한 코드였습니다.

그러나 이해하기는 편하나 repeat() 코드의 경우 내부적으로 StringBuilder 를 사용하며 for() 문을 돌리기에 결국 비슷한 코드라는 생각을 했습니다.

 

반응형