Programmers/Lv. 1

[Kotlin] Programmers Lv. 1 숫자 문자열과 영단어

chattymin 2023. 9. 26. 15:20
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

Code


class Solution {
    fun solution(s: String): Int {
        val numList = listOf(
            Pair("zero", "0"),
            Pair("one", "1"),
            Pair("two", "2"),
            Pair("three", "3"),
            Pair("four", "4"),
            Pair("five", "5"),
            Pair("six", "6"),
            Pair("seven", "7"),
            Pair("eight", "8"),
            Pair("nine", "9")
        )

        var str: StringBuilder = StringBuilder()
        str.append(s)

        var answer = 0

        while (str.length > 0){
            var temp = str[0].toString()
            var index = 1

            numList.forEach {
                if (str.startsWith(it.first)){
                    temp = it.second
                    index = it.first.length
                }
            }

            answer = answer * 10 + temp.toInt()
            str.delete(0, index)
        }
        return answer
    }
    
    fun solution(s: String): Int = s
        .replace("zero", "0")
        .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()
}

영어로 되어있는 숫자를 숫자로 바꿔주는 문제였다. 

 

처음 생각한 아이디어는 영어단어 리스트를 만들고, 대치되는 숫자를 매핑해뒀다.

그 후 입력값을 StringBuilder로 만들고 해당 값을 앞에서부터 잘라내며 변환시키는 알고리즘을 작성했다.

 

다른 사람의 풀이를 보니까 ㅏ...

그냥 replace로 되는구나...

 

허탈하지만 잘 배웠습니다.

728x90
반응형