2024-03-17 Kotlin 배열을 문자열로 출력하기
오늘은 배열에 관련된 백준 문제를 풀다가 알게된 것을 적어본다
1. 배열을 문자열로 출력하기
배열에 관한 문제를 푸는 과정에는 별 문제가 없었지만 문제는 출력이었다. 문제의 답안을 그대로 배열로 출력하는 것이 아니라 문자열로 출력하게 되어 있기 때문이었다. 답으로 얻은 배열이 [1, 2, 3, 4, 5]라면 "1 2 3 4 5"이런 형식으로 출력해야 답으로 처리되게 되어있어 고민에 빠졌다. 일단 내가 알고있는 방법을 동원해서 해결해 보기로 했다.
fun main() {
val array1 = intArrayOf(1,2,3,4,5)
var answer = array1[0].toString()
for (i in 1..array1.size-1) {
answer += " ${array1[i]}"
}
println(answer)
}
코드 실행 결과
1 2 3 4 5
for문을 이용해서 배열에서 요소 하나하나를 문자열에 더해주는 식으로 해결할 수 있었다. 띄어쓰기에 주의해야 했는데 배열의 첫 번째에 해당하는 요소는 for문 안에 넣을 수 없고 변수에 처음에 저장해야 했다.
이렇게 쉽게 해결하긴 했지만 다른 방법이 있을 것 같아 다른 방법을 찾아보았다.
2. joinToString() 이용하기
다른 답안들을 찾아보니 joinToString()이라는 함수를 사용해서 쉽게 해결한 것을 볼 수 있었다.
fun main() {
val array1 = intArrayOf(1,2,3,4,5)
println(array1.joinToString(" "))
}
코드 실행 결과
1 2 3 4 5
코틀린 문서를 참고해서 좀 더 자세히 알아보았다.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/join-to-string.html
joinToString - Kotlin Programming Language
kotlinlang.org
joinToString()의 괄호 안에 넣어주는 값은 구분자(separator)로 그 값이 요소들 사이에 들어가게 된다. 기본 값으로는 콤마 띄어쓰기(", ")로 되어 있어 지정하지 않으면 그에 맞춰 출력된다. 따라서 그냥 숫자들을 나열한 문자열을 얻고 싶다면 괄호안에 빈 문자열("")을 넣어주어야 한다
val array1 = intArrayOf(1,2,3,4,5)
println(array1.joinToString())
println(array1.joinToString(""))
코드 실행 결과
1, 2, 3, 4, 5
12345
그외에도 다양한 기능이 있다. separator에는 구분자가 들어가고, prefix와 postfix를 이용하면 출력할 문자열의 앞뒤로 문자열을 넣을 수 있다.
또 limit으로 출력할 배열 요소의 개수를 제한할 수 있다. 그 이후 요소들은 생략되고 이 생략된 부분들의 자리에는 기본적으로는 "..."이 출력된다. 이 부분도 truncated에 값을 입력하면 바꿀 수 있다.
val array1 = intArrayOf(1,2,3,4,5,6,7,8,9,10)
println(array1.joinToString(separator = "-", prefix = "(", postfix = ")",limit = 6))
println(array1.joinToString(separator = ": ", limit = 6, truncated = "!?!"))
코드 실행 결과
(1-2-3-4-5-6-...)
1: 2: 3: 4: 5: 6: !?!
앞으로도 사용할 일이 많을 것 같은 함수이므로 잘 기억해뒀다가 사용해야 할 것 같다.
3. 오늘 알게 된 것
- 배열을 특정 형태의 문자열로 출력하는 것을 해보았고 알고 있는 것으로도 해낼 수 있었다.
- joinToString()을 사용해 배열을 쉽게 문자열로 출력하는 법을 알게 되었다.