본문 바로가기
백준 C언어/silver

백준 1065 한수 C언어_230113

by boyo-ee 2023. 1. 13.

일단 한수가 뭔지 이해가 잘 되지 않았다. 

검색도 많이 해보고 찾아보고 나서야 문제를 풀 수 있었다.

 

문제의 포인트

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값 설정에 있지 않았을까 생각해 본다.

댓글