[Algorithm] 29. 3의 개수는?(small)

인트로

1부터 N까지 숫자에서 3이 몇 개 있는지 구하는 문제이다.

N의 범위가 작은 만큼 시간제한이 없는 문제이다. 

 

시간제한이 없다면 코딩 기초 문제에 포함되는 문제이지만

시간제한이 있다면 난이도가 엄청나게 올라가니 본 문제를 풀어보고 시간제한이 있다면 어떤 방식으로 풀어야 할지 고민해보자

 

나중에 시간이 된다면 시간제한이 버전을 포스팅하려 한다. (링크 추가 예정)  

3의 개수는? (시간제한 없음)

문제

자연수 N이 입력되면 1부터 N까지의 자연수를 종이에 적을 때 각 숫자 중 3의 개수가 몇 개 있는지 구하려고 합니다.
예를 들어 1부터 15까지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5으로 3의 개수는 2개입니다.

자연수 N이 입력되면 1부터 N까지 숫자를 적을 때, 3의 개수가 몇 개인지 구하여 출력하는 프로그램을 작성하세요.

※ 입력설명
첫 줄에 자연수의 개수 N(3<=N<=100,000)이 주어집니다.

※ 출력설명
3의 개수를 출력하세요.

입력

15

출력

2

코드

#include <iostream>

using namespace std;

int main()
{
	int n, res = 0;

	cin >> n;

	for (int i = 1; i <= n; i++)
	{
		int temp = i;

		while (temp)
		{
			if (temp % 10 == 3)
				res++;
			
			temp /= 10;
		}
	}

	cout << res;
}