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 |