https://school.programmers.co.kr/learn/courses/30/lessons/120894
문제
영어가 싫은 머쓱이는 영어로 표기되어 있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
제한사항
numbers는 소문자로만 구성되어 있습니다.
numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.
1 ≤ numbers의 길이 ≤ 50
"zero"는 numbers의 맨 앞에 올 수 없습니다.
풀이
class Solution {
fun solution(numbers: String): Long {
var sb = StringBuilder()
var index = 0
while (index < numbers.length) {
when (numbers[index]) {
'z' -> {
sb.append(0)
index += 4
}
'o' -> {
sb.append(1)
index += 3
}
't' -> {
if (numbers[index + 1] == 'w') {
sb.append(2)
index += 3
} else {
sb.append(3)
index += 5
}
}
'f' -> {
if (numbers[index + 1] == 'o') {
sb.append(4)
} else {
sb.append(5)
}
index += 4
}
's' -> {
if (numbers[index + 1] == 'i') {
sb.append(6)
index += 3
} else {
sb.append(7)
index += 5
}
}
'e' -> {
sb.append(8)
index += 5
}
'n' -> {
sb.append(9)
index += 4
}
}
}
return sb.toString().toLong()
}
}
- 해당 문제는 replace로 해당값들을 바꿔갈 수도 있지만 그렇게 되면 문자열을 함수로 직접 처리하기 때문에 속력이 안 좋습니다. 그렇다면 인덱스값을 하나하나 비교해 가면서 결과를 구하는 방법을 사용하였습니다. 다행히 numbers는 소문자로만 구성되어 있다고 되어있기때문에 해당로직은 무리 없이 잘 돌아갑니다
결과
'코틀린 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] - 겹치는 선분의 길이(Kotlin) (0) | 2023.07.31 |
---|---|
[프로그래머스] - 캐릭터의 좌표(Kotlin) (0) | 2023.07.31 |
[프로그래머스] - 2차원으로 만들기 (Kotlin) (0) | 2023.07.29 |
[프로그래머스] - n의 배수 고르기 (Kotlin) (0) | 2023.07.28 |
[프로그래머스] - 로그인 성공? (Kotlin) (0) | 2023.07.28 |