티스토리 뷰

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

 

1065번: 한수

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

www.acmicpc.net

각 자리수가 등차수열인 수의 갯수를 구하는 문제입니다.

N의 범위가 1000이하이기에 한자리,두자리,세자리 수가 등차수열인지 체크해야합니다. (1000은 각 자리수가 등차수열이 아님)

 

- 한자리, 두자리 수의 각 자리수는 항상 등차수열을 이룹니다. 따라서, N이 100 미만이라면 답은 N이 됩니다.

- N이 100이상인 경우, '10의자리수 - 1의 자리수' 와 '100의자리수 - 10의자리수' 를 비교해 같다면 답의 갯수를 증가시킵니다.


C++ 소스 코드

#include <iostream>
#include <string>
using namespace std;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    int n,cnt = 0;
    cin >> n;
    if(n>=100){
        cnt+=99;
        for(int i=100;i<=n && i<1000;i++){
            string now = to_string(i);
            if(now[1]-now[0] == now[2]-now[1]) cnt++;
        }
    }else {
        cnt+=n;
    }
    cout << cnt << '\n';
    return 0;
}

'Algorithm > 알고리즘 문제풀이' 카테고리의 다른 글

BOJ) 2638 - 치즈  (0) 2020.12.31
BOJ) 4485 - 녹색 옷 입은 애가 젤다지?  (0) 2020.12.16
BOJ) 14676 - 영우는 사기꾼?  (0) 2020.11.25
BOJ) 1325 - 효율적인 해킹  (0) 2020.11.23
BOJ) 11728 - 배열 합치기  (0) 2020.11.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함