문자열을 정수로 바꾸기

KSang·2023년 11월 29일
0

[Kotlin]코드카타

목록 보기
17/100

문제설명

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요

제한사항

s의 길이는 1 이상 5이하입니다.
s의 맨앞에는 부호(+, -)가 올 수 있습니다.
s는 부호와 숫자로만 이루어져있습니다.
s는 "0"으로 시작하지 않습니다.

진행

문자열을 받을때 숫자로받은게 아니니 배열로 받을것이다

조건문을 사용해서 앞의 부호가 있는지 아닌지 확인해야할것 같다

우선 반복문에 써줄 변수 i를 설정해주자

    var i = if (s[0] == '+'|| s[0] == '-') 1 
    else 0

입력받은 값이 부호이면 문자 첫번째열을 넘기고 그 이후숫자들을 정수로 변환해주면 될테니 1

부호가 아니면 첫번째부터 정수로 변환해줘야하니 0 조건문을 사용해서 정의해주자

이제 반복문을 사용해 문자를 정수로 변환하고 반복할수록 10씩 곱해서 더해주면 될것이다

var answer = 0

while (i < s.length){
        answer = answer*10 + s[i].toInt()
        i++
    }

이 상태로 코드 작성을 하면 문제가 된다

문자 1을 정수로 전환하면 1이되는게 아닌 아스키코드값인 48이된다

그래서 문자 '0'을 정수로 전환하면 47이 되니 문자 '0'을 빼줘서 숫자가 정상적으로 보이게하자

while (i < s.length){
        answer = answer*10 + (s[i].toInt() - '0'.toInt())
        i++
    }

조건문으로 문자열이 -로 시작하면 음수로 만들어주자

코드

package com.example.codekata

fun main() {


    println("${solution("319")}")
    println("${solution("-482")}")
    println("${solution("+792")}")

}
fun solution(s: String): Int {
    var answer = 0
    var i = if (s[0] == '+'|| s[0] == '-') 1
    else 0


    while (i < s.length){
        answer = answer*10 + (s[i].toInt() - '0'.toInt())
        i++
    }

    if (s[0] =='-'){
        answer = -answer
    }


    return answer
}


0개의 댓글