일단 한수가 뭔지 이해가 잘 되지 않았다.
검색도 많이 해보고 찾아보고 나서야 문제를 풀 수 있었다.
문제의 포인트
1. 각 자리가 등차수열이면 그 수가 한수 1~99까지는 1의 자리 / 10의 자리 두 수밖에 존재하지 않으므로 무조건 한수다.
2. 1000보다 작은 수 !! 999까지만 구하면 된다.
#include <stdio.h>
#include <math.h>
int main(){
int n,cnt=99;
scanf("%d",&n);
if(n<=99) printf("%d",n);
else{
for(int i=100;i<=n;i++){
int x=i;
int x1=x%10; //일의자리
x/=10;
int x2=x%10; //십의자리
x/=10; //백의자리
if((x-x2)==(x2-x1)) cnt++;
}
printf("%d",cnt);
}
return 0;
}
처음에는 두 수를 비교해서 큰 지 작은 지도 비교했으나 음수인 등차도 있으므로 간단하게 if문으로 각자리 비교를 하면 된다.
이 문제가 silver인 이유는 99까지의 수처리와 for문변수의 initial값 설정에 있지 않았을까 생각해 본다.
'백준 C언어 > silver' 카테고리의 다른 글
백준 2578 빙고 C언어_230117 (0) | 2023.01.18 |
---|---|
백준 1978 소수찾기 C언어_230113 (0) | 2023.01.13 |
백준 5555 반지 C언어_230108 (0) | 2023.01.13 |
백준 2422 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 C언어_230110 (0) | 2023.01.13 |
백준 1436 영화감독 숌 C언어_230108 (0) | 2023.01.13 |
댓글