티스토리 뷰

알파벳과 숫자가 섞여있는 문자열에서 숫자값만 가져오고 그 숫자의 약수의 개수를 구한다.

문자열의 문자 하나하나를 검색하는 for문에서는 strlen 과 같은 문자 길이 함수를 사용하지 않고

a[i] != '\0' 일때까지 i++ 을 하도록 코드를 작성한다.

그리고 추출한 숫자를 계속 이어붙여야하는데 그 때 사용하는 것이  result = (result*10) + (a[i] - 48) 이다. 

(result * 10)을 해주면서 일의 자리를 새로 만들어내고 추출한 숫자를 일의 자리에 넣는다.

a 배열은 캐릭터 배열이므로 아스키코드 48을 빼줘서 정수화한다.

 

#include <stdio.h>
using namespace std;

int main() {
	char a[100];
	int result = 0, cnt = 0;
	scanf("%s", &a);

	for (int i = 0; a[i] != '\0'; i++) {
		if (a[i] >= 48 && a[i] <= 57) {
			result = (result * 10) + (a[i] - 48);
		}
	}
	for (int i = 1; i <= result; i++) {
		if (result % i == 0) cnt++;
	}
	printf("%d\n%d\n", result, cnt);
	return 0;
}
댓글