C++

[백준 알고리즘] 1065번 : 한수, c++

2022. 1. 14. 12:44

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

 

1065번: 한수

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

www.acmicpc.net

c++로 백준 1065번 문제를 풀어보겠다.

 

 

 

 

 

문제

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

입력

첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

출력

첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

예제 입력 1 복사

110

예제 출력 1 복사

99

 

 

 

 

 

<문제 풀이>

- main 함수

1. N을 선언한 후 입력받는다.

2. 새로 만든 number함수에 N을 넣어 number(N)의 결과값을 출력한다.

- number 함수

3. sum, n1, n2, n3 값을 선언한다.

4. N이 99 일 때까지는 N 값만큼 sum을 출력해야한다.

5. N이 100일 때는 sum 값을 99이다.

6. N이 101부터 999까지는 101부터 N까지 돌며 sum 값을 계산해야한다.

      (세자리 수를 몫과 나머지로 계산해 다 분리시킨 후 각각 n1, n2, n3에 저장한다.)

      (n2-n1 == n3-n2 로 등차수열이라면 sum 값을 하나 증가시킨다.)

7. N이 1000일 때는 101부터 999까지 돌며 sum값을 계산한다.

      (세자리 수를 몫과 나머지로 계산해 다 분리시킨 후 각각 n1, n2, n3에 저장한다.)

      (n2-n1 == n3-n2 로 등차수열이라면 sum 값을 하나 증가시킨다.)

 

 

 

코드는 다음과 같다.