본문 바로가기

코딩테스트/Level1

숫자만 추출

문제

문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 만약 “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;
		
	}

}

'코딩테스트 > Level1' 카테고리의 다른 글

올바른 괄호  (0) 2022.02.09
영어단어 복구  (0) 2022.02.09
나이계산  (0) 2022.02.09
나이 차이  (0) 2022.02.09
진약수의 합  (0) 2022.02.09