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 |