신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

 

※ 문제 풀이 코드는 맨 아래에 있습니다.

 

문제

어떤 양의 정수 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();
        }
    }
}​

 

결과

 직접 문제 풀고 돌려본 뒤, 채점까지 마친 후에 작성한 글입니다.

더 좋은 방법이 있다면, 댓글로 알려주시면 감사하겠습니다 :)

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기