개인 공부/Kotlin
[Kotlin] StringBuilder 사용법
참깨빵위에참깨빵_
2024. 12. 9. 19:43
728x90
반응형
오래 전 자바로 StringBuilder를 쓰는 법에 대해 포스팅했었다. 감사하게도 이 글에 도움을 받은 분들이 많았던 듯하다.
틈날 때마다 자바로 썼던 게시글들을 코틀린으로 다시 쓰는 나만의 작은 프로젝트를 진행하려는데, 그 시작으로 StringBuilder부터 시작해 보려고 한다.
먼저 자바에선 아래처럼 사용했었다.
public class Main {
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("문자열 ").append("연결");
// String str = stringBuilder; // String에 StringBuilder를 그대로 넣을 순 없다. toString()을 붙여야 한다
String str = stringBuilder.toString();
// 두 println()은 같은 값을 출력한다
System.out.println(stringBuilder);
System.out.println(str);
}
}
코틀린에선 좀 더 간결하게 쓸 수 있다.
fun main() {
val sb = StringBuilder()
sb.append("문자열 ")
.append("연결")
val str = sb.toString()
println(str)
}
// >> 문자열 연결
극단적인 예시지만 한 줄로도 쓸 수 있다. 실제로도 이렇게 쓰는지는 잘 모르겠으나 개인적으론 이렇게 쓸 이유가 있나 생각된다.
fun main() {
println(StringBuilder().append("문자열 ").append("연결"))
}
// >> 문자열 연결
반복문을 쓴다면 아래처럼 할 수 있겠다.
fun main() {
val sb = StringBuilder()
val list = listOf(
"첫 번째, ",
"두 번째, ",
"세 번째, ",
"네 번째, ",
"다섯 번째 ",
)
for (i in list.indices) {
sb.append(list[i])
}
println(sb)
println("========================================================")
println("while문에서 반복")
println("========================================================")
val sb2 = StringBuilder()
var i = 0
while (i < list.size) {
sb2.append(list[i])
i++
}
println(sb2)
}
// >> 첫 번째, 두 번째, 세 번째, 네 번째, 다섯 번째
// >> ========================================================
// >> while문에서 반복
// >> ========================================================
// >> 첫 번째, 두 번째, 세 번째, 네 번째, 다섯 번째
코틀린이라고 큰 차이는 없으며 자바에서 사용해 봤다면 코틀린에서도 기본 문법만 안다면 충분히 사용할 수 있을 정도로 간단하다.
코딩테스트에서 StringBuilder는 문자열을 조작하는 문제에서 사용할 수 있다. 간단한 예문으로 확인해 본다.
주어진 문자열을 뒤집어 출력하라
코틀린이라면 StringBuilder를 안 써도 풀 수 있는 문제지만 굳이 사용한다면 아래처럼 할 수 있다.
fun main() {
val input = readln()
val sb = StringBuilder(input)
println(sb.reverse())
}
// >> hello
// >> olleh
주어진 문자열에서 각 문자를 n회 반복해서 새 문자열을 출력하라
fun main() {
val n = readln().toInt()
val input = readln()
val sb = StringBuilder()
for (char in input) {
repeat(n) {
sb.append(char)
}
}
println(sb.toString())
}
// >> 3
// >> abc
// >> aaabbbccc
반응형