프로그래밍/CodeUp

CodeUp[Q_2012] : 1의 개수는? 2

조원일 2020. 2. 10. 18:42
728x90

1. 문제

https://codeup.kr/problem.php?id=2012

 

1의 개수는? 2

구글 입사 시험으로 1 ~ 1,000,000까지 1의 개수를 묻는 문제가 나온적이 있다. 이중 for문을 배웠으니 이 문제를 일반화 시켜 문제를 풀어보자. 시작 수 a와 마지막 수 b가 주어지면 a부터 b까지의 수 중 1이 몇 번 들어 있는지 세는 프로그램을 작성하시오. (숫자의 어느 위치에든 1이 있으면 개수를 센다) 예) 9 13   ----> 5번  ( 10, 11, 12, 13  : 11은 두번으로 계산) 110 113 ----> 9번 ( 110,

codeup.kr

[출처 : 코드업(https://codeup.kr/)]

이번 문제는 a ~ b 범위에서 1의 개수를 더해주는 문제입니다.

Q_2011를 이용하면 쉽게 해결할수있습니다.

 

 

2. 해답

#include <stdio.h>

int f(int n) {
	int c = 0;

	while (n != 0) { // 각 자리수마다 1숫자가 있는지 확인
		if (n % 10 == 1) c++;
		n /= 10;
	}
	return c; // 1의 개수를 리턴
}

int main() {
	int a, b;
	int sum = 0;

	scanf("%d %d", &a, &b);

	for (int i = a; i <= b; i++) {
		sum += f(i);
	}
	printf("%d", sum);
	return 0;
}