내가 짠 코드 ( 효율성 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()
}
'코딩테스트 준비(kotlin) > 문자열' 카테고리의 다른 글
[kotlin] 프로그래머스 둘만의 암호 (0) | 2024.05.30 |
---|---|
[kotlin] 크기가 작은 부분문자열 (0) | 2024.05.19 |
[kotlin] 이상한 문자 만들기 (0) | 2024.05.07 |
[프로그래머스] 문자열 다루기 기본(kotlin) (2) | 2024.05.01 |
[프로그래머스] 문자열 내림차순으로 배치하기 (1) | 2024.04.30 |