문제 설명
이 문제에는 표준 입력으로 두 개의 정수 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() 문을 돌리기에 결국 비슷한 코드라는 생각을 했습니다.
반응형
'Dev > Algorithm' 카테고리의 다른 글
간만의 알고리즘 공부 - 21 (문자열 다루기 기본) (0) | 2024.07.26 |
---|---|
간만의 알고리즘 공부 - 20 (부족한 금액 계산하기) (2) | 2024.07.23 |
간만의 알고리즘 공부 - 18 (내적) (0) | 2024.07.17 |
간만의 알고리즘 공부 - 17 (핸드폰 번호 가리기) (0) | 2024.07.17 |
간만의 알고리즘 공부 - 16 (핸드폰 번호 가리기) (0) | 2024.07.16 |