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 |