[백준] 1065 한수

0

백준

목록 보기
165/271
post-thumbnail

[백준] 1065 한수

#include <iostream>
#include<algorithm>
#include <vector>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);

	int n;
	cin >> n;

	int cnt = 0;
	for (int x = 1; x <= n; ++x) {
		vector<int> digit;
		int tmp = x;
		while (tmp != 0) {
			digit.push_back(tmp % 10);
			tmp /= 10;
		}
		//등차수열 이루는지 검사
		if (digit.size() < 3) cnt++;
		else {
			bool flag = true;
			int sub = digit[0] - digit[1];
			for (int i = 0; i < digit.size() -1; ++i) {
				if ((digit[i] - digit[i + 1]) != sub) {
					flag = false;
					break;
				}
			}
			if (flag) cnt++;
		}
	}

	cout << cnt;
	return 0;
}

3년 전 코드

#include <stdio.h>
#pragma warning (disable:4996)

int main() {
	// 0 < n < 1000
	int n;
	scanf("%d", &n);

	int cnt; //한수의 개수
	int digit[3]; //각 자리수 배열에 저장

	//1자리수 : 모두 한수
	//2자리수 : 모두 한수
	//3자리수 : 한수 판별해야함

	if (n < 100) cnt = n;
	else{
		cnt = 99;

		for (int i = 100; i <= n; i++) { 
			if (i == 1000)break;

			int k = i;
			digit[0]= (k % 10);
			k /= 10;
			digit[1] = (k % 10);
			k /= 10;
			digit[2] = (k % 10);

			//한수 판별
			if ((digit[0] - digit[1]) == (digit[1] - digit[2])) cnt++;
		}
	}

	printf("%d", cnt);
	return 0;
}

profile
Be able to be vulnerable, in search of truth

0개의 댓글