관리 메뉴

나만을 위한 블로그

[Kotlin] StringBuilder 사용법 본문

개인 공부/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

 

 

반응형
Comments