본문 바로가기

algorithm

c++)백준 1065-한수

728x90

완전탐색을 이용하여 모든 경우의 수를 출력하는 문제입니다.

 

  • 풀이방법

* 1의자리, 10의자리 숫자는 모두 한수입니다.

비교 대상이 하나밖에 없기 때문에 모두 등차수열을 이룬다고 볼 수 있습니다.

따라서 N > 100인 숫자들에 대해서만 등차수열인지 확인해야 합니다.

 

* 100의자리 - 10의자리  == 10의자리 - 1의자리 인지 판단하면 확인할 수 있습니다.

예를들어 123 의 경우 3 - 2 == 2 - 1  이므로 한수입니다.

하지만 132 의 경우 2 - 3 != 3 - 1 이므로 한수가 아닙니다.

 

#include <iostream>
#include <vector>
#include <stdio.h>
#include <algorithm>
using namespace std;
int N;

int solution(int N) {
    if(N < 100) return N;
    int cnt = 99;
    for(int i=100; i<=N; i++) {
        int a= i / 100;
        int b = i / 10 % 10;
        int c = i % 10;

        if((c-b) == (b-a)) cnt++;
    }
    return cnt;
}

int main()
{
    scanf("%d",&N);
    printf("%d",solution(N));
}
728x90

'algorithm' 카테고리의 다른 글

c++)백준 1759 - 암호 만들기  (0) 2021.07.01
c++) 백준 1018 - 체스판 다시 칠하기  (0) 2021.07.01
c++) 6장 - 시계 맞추기  (0) 2021.06.29
c++) 6장 - '소풍' 문제풀이  (0) 2021.06.24
c++) 조합 구현하기  (0) 2021.06.23