문제를 풀기위해 숫자들을 맵의 형태로 집어넣어서 s에서 문자를 숫자로
바꿔야겠다는 생각을 했다.
먼자 val map = mapOf(
"zero" to 0,
"one" to 1,
"two" to 2,
"three" to 3,
"four" to 4,
"five" to 5,
"six" to 6,
"seven" to 7,
"eight" to 8,
"nine" to 9
)
map 이란 변수를 만들어서 zero부터 nine까지 저장했다.
그 이후 StringBuilder() 함수를 통해서 문자에 숫자가있을때와 문자가
있을때로 경우를 나뉘어서 append하면 된다고 생각했다.
그래서 for문을 다음과 같이 작성했다.
for (char in s) {
if (char.isDigit()) {
answer = answer * 10 + char.toString().toInt()
} else {
currentNumber.append(char)
if (map.containsKey(currentNumber.toString())) {
answer = answer * 10 + map[currentNumber.toString()]!!
currentNumber.clear()
}
}
}
각각의 경우에 10을 곱한값을 더해나가면 뒤에서부터 숫자든 문자든 붙일수 있기 때문이다.
그래서 코드는 다음과 같이 완성했다.
그런데 통과 후 다른사람의 코드를 봤는데 정말 쉽게 작성한 코드를 봤다.
어쨋든 결과는 s 의 문자열에서 문자만 숫자로 변경하면 되기때문에
굉장히 효율적으로 작성한것 같았다..
해당 문제는 카카오 인턴 코테인데 역시 카카오 답다고 생각했다.
코드를 최대한 줄이는 방향으로 연습해야겠다.
지금은 lv1이지만 lv2로 올라가면 훨씬 어려울것 같고 이론공부가
많이 안되어있어서 더 공부를 많이 해야할 듯 싶다.
'TIL > kotlin 알고리즘' 카테고리의 다른 글
kotlin 프로그래머스 lv1 K번째수 (0) | 2024.02.01 |
---|---|
kotlin 프로그래머스 lv1 문자열 내 마음대로 정렬하기 (0) | 2024.02.01 |
kotlin 프로그래머스 lv1 시저 암호 (0) | 2024.02.01 |
kotlin 프로그래머스 lv1 최소직사각형 (0) | 2024.01.31 |
kotlin 프로그래머스 lv1 삼총사 (0) | 2024.01.31 |