문제
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 만약 “t0e0a1c2her”에서 숫자만 추출하면 0, 0, 1, 2이고 이것을 자연수를 만들면 12가 됩니다. 즉 첫 자리 0은 자연수화 할 때 무시합니다.
출력은 12를 출력하고, 다음 줄에 12의 약수의 개수를 출력하면 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
입력 예제
g0en2Ts8eSoft
출력 예제
28
6
답
public class problem06 {
public static void main(String[] args) {
String a = "g0en2Ts8eSoft";
String result = method(a);
String result2 = method2(a);
System.out.println(result);
System.out.println(result2);
}
//첫 번째 답
public static String method(String a) {
String result = "";
int num = 0;
for(int i=0; i<a.length(); i++) {
char b = a.charAt(i);
if(b>='0'&& b<='9') {
num = num*10+(b-'0'); //기존의 값을 10 곱해주면 됨.
}
}
int count = 0;
for(int i=1; i<=num; i++) {
if(num%i==0)
count++;
}
result = num+"\n"+count;
return result;
}
//두 번째 답
public static String method2(String a) {
String result = "";
String number = "";
for(int i=0; i<a.length(); i++) {
char b = a.charAt(i);
if(b>='0'&& b<='9') {
//Char를 이어붙여 String만듦
number = number+Character.toString(b);
}
}
//숫자로 만들면 자동적으로 028이 28이 된다.
int num = Integer.parseInt(number);
int count = 0;
for(int i=1; i<=num; i++) {
if(num%i==0)
count++;
}
result = num+"\n"+count;
return result;
}
}