-
[BaekJoon Java] 한수(1065)Coding Test/BaekJoon 2021. 3. 14. 18:51
- 문제
어떤 양의 정수 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
'Coding Test > BaekJoon' 카테고리의 다른 글
[BaekJoon Java] 숫자의 합(11720) (0) 2021.07.22 [BaekJoon Java] 아스키 코드(11654) (0) 2021.07.20 [BaekJoon Java] 평균(1546) (0) 2020.12.26 [BaekJoon Java] 나머지(3052) (0) 2020.12.26 [BaekJoon Java] 숫자의 개수(2577) (0) 2020.12.26