-
[백준 알고리즘/Kotlin] 2588번 곱셈 (feat. toString() 이후 toInt() 사용)IT Study/백준 알고리즘 2023. 12. 26. 16:03728x90
1. 최종 코드
fun main() = System.`in`.bufferedReader().use { br -> val n = br.readLine().toInt() var m = br.readLine() for (i in 2 downTo 0) { val result = n * m[i].toString().toInt() println(result) } print(n * m.toInt()) }
코드를 분석해 보도록 하죠. 아주 단순하지만, 유심히 봐야 할 곳이 있습니다.
2. 코드 살펴보기
for (i in 2 downTo 0) { val result = n * m[i].toString().toInt() println(result) }
2-1. downTo
downTo는 Kotlin에서 제공하는 범위 연산자입니다. downTo는 특정 숫자부터 거꾸로 줄어드는 범위를 생성합니다.
downTo를 사용해, 각 자리를 뒤에서부터 순회하며 첫 번째 입력값인 n과 곱하는 과정을 보여주고 있습니다. (2, 1, 0 순서)
2-2. 왜 toString() 이후, toInt()를 하나요?
문자열 내의 특정 위치의 문자를 정수로 변환하기 위해 toString() 이후 toInt()를 사용합니다.
m [i]는 문자열 m의 i번째 문자를 반환하는데, 이 값은 문자형(char)이므로 직접 정수로 변환할 경우 ASCII 코드 값을 반환합니다.
따라서 먼저 toString()으로 문자를 문자열로 변환한 뒤, toInt()를 사용해 문자열을 정수로 변환하면 하면
숫자를 나타내는 문자가 올바르게 정수로 변환됩니다.
3. 마무리
제가 느끼기에 단순한 문제라고 느꼈지만, 정말 배울 점이 많았는데요.
ASCII 코드로 바뀌지 않도록 하기 위해, toString() 이후 toInt()로 변환하는 과정 반드시 기억해야겠습니다. 감사합니다 :)
'IT Study > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘/Kotlin] 2738번 행렬 덧셈 (feat. 2차원 배열) (0) 2023.12.31 [백준 알고리즘/Kotlin] 1157번 단어 공부 (feat. maxOrNull, count, indexOf) (0) 2023.12.27 [백준 알고리즘/Kotlin] 10869번 사칙연산 (feat. 입출력, append 체이닝) (1) 2023.12.26 [백준 알고리즘/Kotlin] 4673번 셀프 넘버 (feat. Array의 fill과 초기화 람다 차이) (0) 2023.12.25 [백준 알고리즘/Kotlin] 1202번 보석 도둑 (feat. mutableListOf, PriorityQueue) (0) 2023.12.25