처음에는 map으로 처리를 할까 하였으나 인덱스 값을 따져가며 하는게 비효율적이라 생각되어 고민을 좀 했다.
문자열 안에서 숫자는 냅두고 영단어만 숫자로 바꿀 순 없을까 하다가 찾은게 replace()
replace(바꿀녀석, 원하는결과) 이런식으로 쓰면 된다.
우선 코드를 보자.
class Solution {
fun solution(s: String): Int {
var answer : Int = 0
val numArr = arrayOf("zero", "one", "two", "three", "four", "five", "six", "seven","eight", "nine")
var temp = s
for (i in 0 until numArr.size) {
temp = temp.replace(numArr[i], i.toString())
}
answer = temp.toInt()
return answer
}
}
영단어를 배열에 넣어 반복문으로 해당하는 영단어가 있으면 그 영단어가 있었던 인덱스 값을 문자열값으로 넣어준다.
여기서 신경써줘야 할건 숫자를 배열에 순서대로 넣어준다는 것! one zero four two nine --- 이런식으로 넣으면 안된다. 또한 반복문의 조건식도 신경써서 넣어주어야한다.
배열을 잘 쓰면 까다로울 수 있는 문제도 쉽게 해결 가능하다는 걸 느낀 문제다.
'Code KATA' 카테고리의 다른 글
Programmers 푸드 파이트 대회 with Kotlin (0) | 2023.11.27 |
---|---|
Programmers 두 개 뽑아서 더하기 with Kotlin (0) | 2023.11.24 |
Programmers K번째 수 with Kotlin (0) | 2023.11.23 |
Programmers 문자열 내 마음대로 정렬하기 with Kotlin (0) | 2023.11.22 |
Programmers 시저 암호 with Kotlin (1) | 2023.11.20 |