신규 블로그를 만들었습니다!
※ 문제 풀이 코드는 맨 아래에 있습니다.
문제
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
예제입력
110
예제출력
99
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Ex1065 {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
int n = Integer.parseInt(br.readLine());
int cnt = 0; // result
if(n<100) {
// 첫째 자리, 둘째 자리
cnt = n;
}else if(n>=100 & n<=1000) {
if(n == 1000) {
n = 999;
}
// 셋째 자리
cnt = 99;
int i;
int[] num;
for(i=100; i<=n; i++) {
num = new int[] {i/100, (i%100)/10, i%10};
// System.out.println(num[0]+","+num[1]+","+num[2]);
int ad = num[1]-num[0];
if(ad == (num[2]-num[1])) {
// 등차수열이다
cnt++;
}
}// end for
}// end if
System.out.println(cnt);
} catch (Exception e) {
e.printStackTrace();
}
}
}
결과
※ 직접 문제 풀고 돌려본 뒤, 채점까지 마친 후에 작성한 글입니다.
더 좋은 방법이 있다면, 댓글로 알려주시면 감사하겠습니다 :)
'Algorithm > 백준 온라인 저지' 카테고리의 다른 글
백준/2448번 :: 별찍기 - 11 (Java 구현) - Recursive 재귀함수 (4) | 2018.06.29 |
---|---|
백준/4673번 :: 셀프 넘버 (Java 구현) (6) | 2018.06.28 |
백준/1110번 :: 더하기 사이클(Java 구현) (4) | 2018.06.28 |
백준/10828번 :: 스택(Java 구현) - ArrayList 이용 (5) | 2018.06.28 |
백준/2606번 :: 바이러스 (Java 구현) - BFS (2) | 2018.06.23 |
최근댓글