Problem Solving/BOJ

[백준 / BOJ] C++ 1065 한수

nageune 2023. 2. 8. 19:42
728x90
반응형

1065번: 한수

 

문제

https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

 

풀이

어떤 수 X의 각 자릿수가 등차수열을 이루면 이 수를 한수라 한다. 1000 이하의 자연수 N을 입력받고 N 이하의 자연수 중 한수의 개수를 출력하는 문제다.

 

100 이하 즉, 한자리 수와 두 자릿수는 어떤 상황에서도 등차수열을 이룬다. 그리고 입력되는 N은 1000 이하의 수이기 때문에 1000은 한수가 아니므로 세 자리 수만 신경 쓰면 된다. 따라서 세 자릿수를 문자열 str로 바꾸어 str[1] - str[0] 와 str[2] - str[1] 가 같은지 확인하면 된다.

 

 

코드

#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n, cnt = 0;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    string str = to_string(i);
    if (i < 100)
      cnt++;
    else if (str[1] - str[0] == str[2] - str[1])
      cnt++;
  }
  cout << cnt << '\n';
  return 0;
}

 

728x90
반응형