CodeWars 마흔 여덞 번째 문제
Updated:
Write Number in Expanded Form
public static String expandedForm(int num) {
int size = (int) (Math.log10(num) + 1);
String[] expandNum = new String[String.valueOf(num).replace("0", "").length()];
for(int i = 0, j = expandNum.length -1 ; i < size; i++) {
int rest = num % 10;
num = num/ 10;
if(rest != 0) {
expandNum[j] = String.valueOf(rest * (int)(Math.pow(10, i)));
j--;
}
}
return String.join(" + ", expandNum);
}
- 코드가 너무 더럽긴 하다. 하지만 별수 없었다.
- 0이라는 존재가 사라져야 하기 때문에 코드가 복잡해졌다. 또 자리수마다 10^자리수 값을 표현해야 했다.
- Best 코드는 정말로 똑똑했다. 숫자를 빼서 String을 앞에 붙이는 생각을 했다.
- for의 조건은 10의 배수로 주어진 nu보다 작으면 계속해서 반복
- for을 나오면 가장 큰 자리수 전에 나온 수들을 모두 빼면 마지막에 string 앞에 붙인다…
- 태형이가 오늘 재능에 대해서 말했다. 역시 재능의 차이는 있다. 하지만 기죽을 필요는 없다. 사회는 꼭 재능있는 사람들만이 살아가는 것은 아니다. 노력을 통해 지금의 나보다 나은 삶을 살면 되는 것이다.
public class Kata
{
public static String expandedForm(int num)
{
String outs = "";
for (int i = 10; i < num; i *= 10) {
int rem = num % i;
outs = (rem > 0) ? " + " + rem + outs : outs;
num -= rem;
}
outs = num + outs;
return outs;
}
}