-
백준 1065 - 한수백준 algorithm 2019. 9. 2. 00:56반응형
아침에 일어나자마자 풀어본 문제이다. 친구는 쉽게 푼 문제이지만 나에겐 시간이 필요했다.
우선 등차 수열에 대한 개념을 정확히 하고 가야 했다.
등차수열 : 연속하는 두 항의 차이가 모두 일정한 수열을 뜻한다.여기서 한수는 자리수들이 서로 등차수열을 이룰 때, 그 해당하는 숫자를 한수라고 한다.
ex)123: 1 2 3 => 2(두번째 항)-1(첫번째 항)= 3(3번째 항)-(2번째 항)이므로 한수에 해당한다.
0~99까지의 숫자까지는 항이 두개이므로 모든 숫자 자신이 한수에 해당한다.
100부터의 숫자는 위의 조건을 만족하는 갯수를 카운트하여 알려줘야한다.
등차수열을 확인하기 위해서는 각자리 숫자를 분열하여야한다.
100의 자리 : number/ 100
10의 자리 : (number / 10) % 10
1의 자리 : number % 10위와 같이 각 자리 숫자를 나누면 조건에 합당하는지 확인할 수 있다.
위의 방법으로 분열한 숫자들을 배열속에 넣고 연속하는 배열의 수들의 크기 차이가 동등한지 확인하여 카운트 갯수를 늘린다.#include <iostream> using namespace std; int method(int number) { int DP[3] = { 0 }; int value = 99; if (number <= 99) { value = number; } else if (99 < number) { for (int i = 100; i <= number; i++) { DP[0] = i / 100; //100의자리숫자 DP[1] = (i / 10) % 10;//10의자리숫자 DP[2] = i % 10;//1의자리숫자 if ((DP[0] - DP[1]) == (DP[1] - DP[2])) { value++;//값 증가 } } } return value; } int main() { int han;//1000보다 작거나 같은 자연수 N //0~99까지는 모두가 한수이다. cin >> han; cout << method(han); return 0; }
반응형'백준 algorithm' 카테고리의 다른 글
11654 - 아스키코드 (0) 2019.09.02 백준 1037 - 약수 (0) 2019.09.02 백준 11727 - 2×n 타일링 2 (0) 2019.08.31 백준 2440 - 별 찍기 - 3 (0) 2019.08.31 백준 2439-별찍기-2 (0) 2019.08.31