728x90
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
풀이
1~99까지는 10의자리 1의자리가 차이가 나도 두값 밖에 없으므로, 공차 자체가 등차를 이룬다.
3자리의 경우 100의 자리, 10의 자리, 1의 자리의 값의 차가 동일해야함으로 조건문을 이용하여 판단
입력 1000까지만 들어오기에 1000은 한수가 아니라서 false를 출력함
코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt(),cnt=0;
Main m=new Main();
for(int i=1;i<=n;i++)
if(m.x(i))
cnt++;
sc.close();
System.out.println(cnt);
}
private boolean x(int n) {
if(n<100)
return true;
if(n==1000)
return false;
int a=n/100, b=(n/10)%10, c=n%10;
if(a-b==b-c)
return true;
return false;
}
}
728x90
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
Baekjoon 1316 그룹 단어 체커 JAVA (0) | 2022.01.18 |
---|---|
Baekjoon 5622 다이얼 JAVA (0) | 2022.01.18 |
Baekjoon 15596 정수 N개의 합 JAVA (0) | 2022.01.17 |
Baekjoon 15649 N과 M (1) JAVA (0) | 2022.01.17 |
Baekjoon 4673 셀프 넘버 JAVA (0) | 2022.01.17 |
댓글