본문 바로가기

문제풀이/C++

[C++] 숫자만 추출

728x90

[목적]

문자와 숫자가 섞여있는 문자열을 입력하면 그 중 숫자만 추출하여 그 순서대로 자연수를 만들어 그 자연수와 자연수의 약수 개수를 출력한다.

 

[입력예제]

g0en2Ts8eSoft

 

[출력예제]

28
6

 

문자열 'g0en2Ts8eSoft'을 입력받으면 그 안의 [0, 2, 8] 숫자만 찾아 자연수로 만든다.

이때, 맨 앞자리 수가 '0'인 경우 '0'은 무시하게 된다.

숫자만 찾아 해당 숫자를 출력해 주고 난 후 28의 약수는 [1, 2, 4, 7, 14, 28]로, 총 6개라고 출력해준다.

 

 

※ ASCII 코드에 대한 이해를 하고 나면 쉽게 문제 풀이가 가능하다.


[코드]

#include <iostream>
#include <cstring> //strlen

using namespace std;

int main(void) {
    
	char str[50]; //최대 문자열 길이 50
	int num=0, plus=0;
	
	cin >> str;
	
	for(int i=0; i<strlen(str); i++){ //문자열의 길이만큼 반복
            if(str[i] > 47 && str[i] < 58) num = num*10 + str[i]-48; // ASCII코드 상 숫자 범위 안일때만 실행			
	}

	for(int i=1; i<=num; i++){
            if(num%i == 0) plus++;
	}
	
	cout << num << endl;
	cout << plus;  
    
    return 0;
}

 

[실행결과]

 

728x90
반응형

'문제풀이 > C++' 카테고리의 다른 글

[C++] 올바른 괄호  (0) 2020.12.27
[C++] 영어단어 복구  (0) 2020.12.27
[C++] 나이 계산  (0) 2020.12.27
[C++] 나이 차이  (0) 2020.12.27
[C++] 진약수의 합  (0) 2020.12.26