본문 바로가기
코딩테스트 준비(kotlin)/문자열

[kotlin] 숫자 문자열과 영단어

by 1chanhue1 2024. 5. 22.

 

 

내가 짠 코드 ( 효율성 x ) 

 

1. s 문자열을 배열로 바꾼 후 배열의 길이 만큼 반복문을 진행한다. 

2. 숫자일 경우 arraylist에 추가하고 배열의 index를 관리하는 i를 1 증가시킨다.

3. 숫자가 아닌 다른 문자일 경우 조건에 맞도록 검사 후 , 문자의 길이만큼 i를 증가 시칸다.

4. 완성된 arraylist를 jointoString 함수를 이용하여 String으로 만든 후 , toint 함수로 int형으로 변환 후 return 

fun solution123(s: String): Int {
    
    var value = s.toCharArray()
    var problem = arrayListOf<Char>()
    var i = 0
    while (i < value.size) {

        if (value[i] >= '0' && value[i] <= '9') {
            problem.add(value[i])
            i++

        } else {
            if (value[i] == 'z') {
                problem.add('0')
                i = i + 4
            }
            else if (value[i] == 'o') {
                problem.add('1')
                i = i + 3
            }
            else if (value[i]=='t'&&value[i+1]=='w'){
                problem.add('2')
                i = i + 3
            }
            else if (value[i]=='t'&&value[i+1]=='h'){
                problem.add('3')
                i = i + 5
            }
            else if (value[i]=='f'&&value[i+1]=='o'){
                problem.add('4')
                i = i + 4
            }
            else if (value[i]=='f'&&value[i+1]=='i'){
                problem.add('5')
                i = i + 4
            }
            else if (value[i]=='s'&&value[i+1]=='i'){
                problem.add('6')
                i = i + 3
            }
            else if (value[i]=='s'&&value[i+1]=='e'){
                problem.add('7')
                i = i + 5
            }
            else if (value[i]=='e'){
                problem.add('8')
                i = i + 5
            }
            else if (value[i]=='n'){
                problem.add('9')
                i = i + 4
            }


        }

    }


    return problem.joinToString("").toInt()
}

 

 

replace 함수를 알고 나서 

 

replace함수를 사용하여 각 문자에 맞는 숫자로 치환후, toInt 함수를 사용하여 Int형으로 변환 후 return한다. 

fun solution123(s: String): Int {
    return s.replace("zero", "0").replace("one", "1")
        .replace("one", "1")
        .replace("two", "2")
        .replace("three", "3")
        .replace("four", "4")
        .replace("five", "5")
        .replace("six", "6")
        .replace("seven", "7")
        .replace("eight", "8")
        .replace("nine", "9").toInt()


}