Coding Test/BaekJoon
[BaekJoon Java] 한수(1065)
momong'-'
2021. 3. 14. 18:51
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