문제설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한사항
n은 10,000,000,000이하인 자연수입니다.
진행
일단 자릿수를 알아보자 반복문을 사용해 10씩 나눠주게 된다면 몇자리수인지 알게 되고
배열의 크기를 정할수 있다
나눠주면서 나머지를 구하면 원소로 넣을수 있다
여기서 고민이된게 10씩나눠서 먼저 몇자리 수인지 알고 배열의 크기를 정한뒤 배열을 정의한다음
나머지를 구하면서 배열에 넣어야하는데 비슷한과정을 2번 반복해야된다는게 마음에 들지 않는다
이전에 썻던 가변리스트를 써보자
var answer = mutableListOf<Int>()
반복문을 써주자 한번 반복될때마다 10으로 나눠 나머지를 구해주고 .add()함수를 써 배열에 추가
입력된값을 10으로 나눠주고 반복하면 끝
while (x > 0){
var result = x % 10
answer.add(result)
x /= 10
}
코드
package com.example.codekata
fun main() {
println("정수를 입력하세요")
val x = readln().toInt()
if (x > 10000000000){
println("숫자가 너무 큽니다")
}
else if (x < 0){
println("자연수만")
}
else
println("${solution(x).joinToString(" , ")}")
}
fun solution(n: Int): MutableList<Int> {
var answer = mutableListOf<Int>() //가변리스트
var x = n
while (x > 0){
var result = x % 10
answer.add(result)
x /= 10
}
return answer
}