Coding Test/BaekJoon

[BaekJoon Java] 한수(1065)

momong'-' 2021. 3. 14. 18:51

www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net


  • 문제

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

  • 예제 입출력

  • 풀이
import java.util.Scanner;

/**
 * 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.
 *  N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 
 * @author imj10
 *
 */
public class ArithmeticSequence {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		int ans = 99;
		
		if ( n < 100 ) {
			ans = n;
		}
		else {
			for (int i=100; i<=n; i++) {
				int a = i/100;
				int b2 = i%100/10*2;
				int c = i%10;
				
				if ( b2 == a + c ) {
					ans += 1;
				}
			}
		}
		System.out.println(ans);
	}
}

 

  • 결과


  • 추가설명

한수: 어떤 정수의 자리수가 등차수열을 이루는 수

 

ex) 111(등차 0), 123(등차 1)

 

두자리 수는 12(공차 1), 25(공차 3) 이런식으로 모든 수가 공차가 된다.

한자리 수는 예시를 계산해보고 포함되는지 안되는지 결정한다.

=> 예시를 대입했을 경우 포함!

 

그럼 3자리 수에서 한수를 찾으면 해결.

세자리에서 등차수열을 찾는다.

 

100의 자리: a

10의 자리: b

1의 자리: c

 

b - a == c - b

∴ 2b = a + c