29번 문제   

 

 



    내가 풀이한 답   

 n번 순회(for)를 돌며 i번째 수가 10으로 나눈 나머지가 3이면 값을 증가시키는 방법을 사용하였다. 

 

#include <stdio.h>

int main(int argc, char** argv) {
	//freopen("input.txt", "rt", stdin);

	int n, i, temp, cnt=0;
	scanf("%d", &n);
	
	for(i=1; i<=n; i++){
		temp=i;
		while(temp>0){
			if(temp%10==3) cnt++;
			temp /= 10;
		}
	}
	
	printf("%d", cnt);
	
	return 0;
}

 

 결과는 통과하였다.

 

 

 



    사이트의 답안   

#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
	freopen("input.txt", "rt", stdin);
	int n, tmp, i, cnt=0, digit;
	scanf("%d", &n);
    
	for(i=1; i<=n; i++){
		tmp=i;
		while(tmp>0){
			digit=tmp%10;
			if(digit==3) cnt++;
			tmp=tmp/10;
		}
	}
    
	printf("%d\n", cnt);
	return 0;
}

 

  사이트의 답과 논리적으로 일치하였음을 확인했다.

'알고리즘 & 자료구조 > 기초 다잡기' 카테고리의 다른 글

31. 탄화수소 질량  (0) 2020.09.08
30. 3의 개수는?(large)  (0) 2020.09.08
28. N!에서 0의 개수  (0) 2020.09.08
27. N!의 표현법  (0) 2020.09.08
26. 마라톤  (0) 2020.09.08