본문 바로가기
개발노트/프로그래머스

인덱스 바꾸기 코틀린

by 시계속세상은아직돌아가는중 2023. 7. 31.

https://school.programmers.co.kr/learn/courses/30/lessons/120895

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

fun main() {
    var str = "I love you"
    var num1:Int = readLine()!!.toInt()
    var num2:Int = readLine()!!.toInt()

    var arr = str.toCharArray()
    val temp = arr[num1]
    arr[num1] = arr[num2]
    arr[num2] = temp

    str = String(arr)
    println("$str")


}
class Solution {
    fun solution(my_string: String, num1: Int, num2: Int): String {
        var answer: String = ""
        var arr = my_string.toCharArray()
        var temp = arr[num1]
        arr[num1] = arr[num2]
        arr[num2] = temp
        
        answer = String(arr)
        return answer
    }
}

해당 문제를 접근할 때 이전 문제에서 문자불변의 성질 때문에 String형태에 접근할 때는 stringbulider를 써야한다고 생각했으나, 인덱스 자체를 바꾸는 문제는 불가능 했다.

 

이를 해결하기 위해 해당 스트링형태의 변수를 배열로 변환했다. 덕분에 arr[index] = arr[index2]로 변환이 가능해졌다.

temp는 임시적으로 num2의 값을 저장해주기 위한 장치이다.

 

여기서 형태변환에서 몰라서 한참 해맸던 부분이 있다. 이 부분을 혼자 해결환 결론은 이렇다.

 

1. str = String(arr) //정답
2. str = arr.toString() //오답. 처음 시도했던 방식

String() -> 어떤 형태이든 문자로 형변환이지만

toString() -> 배열을 문자로 바꿔주는 기능이 없다!!!!

 

따라서 String()으로 하는게 정답인 것이다.

 

하지만 여기서 튜터님께 질문한 결과물이  하나 더 등장하는데... 바로

 

joinToString("")이다

 

이를 사용하면 배열을 문자열로 바꿔줄 수 있다.

 

따라서

 

fun main() {
    var str = "I love you"
    var num1:Int = readLine()!!.toInt()
    var num2:Int = readLine()!!.toInt()

    var arr = str.toCharArray()
    val temp = arr[num1]
    arr[num1] = arr[num2]
    arr[num2] = temp

    str = arr.joinToString("")
    println("$str")


}

 

가 옳바른 습관이 될 것이다.

 

 

 

블로그 참고

https://wdprogrammer.tistory.com/11

 

[Kotlin] 코틀린에서 형변환은 어떻게 할까

2018-10-17-kotlin-casting Java에서는 자동 형변환을 지원했으며, 강제 형변환도 손쉽게 가능했다. 형변환이 가능하다면 그냥 변수명 앞에 (타입)만 붙여주면 된다. 그렇지만 코틀린은 자동 형변환을 지

wdprogrammer.tistory.com

https://notepad96.tistory.com/3

 

코틀린(Kotlin) 기본 문법(자료형, 형변환, 배열)

1. Kotlin 자료형 코틀린은 자바와 100% 호환이 가능하며 그에 따라서 문법적으로 유사한 점이 많이 있다. 대신 코틀린은 세미콜론( ; )을 사용하지 않으므로 들여 쓰기, 불필요한 공백을 주의해야

notepad96.tistory.com

https://ji-musclecode.tistory.com/16

 

JS - String() 과 toString()

JS에는 문자열로 형 변환을 제공하는 기본 함수 String()과 .toString()이 있습니다. 주로 개발을 하면서 문자열로 형변환이 필요한 경우가 있는데, 보통 String()을 사용하여 변환하였습니다. 그렇다면

ji-musclecode.tistory.com

https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/join-to-string.html

 

joinToString - Kotlin Programming Language

 

kotlinlang.org