[Info]Tags categorized posts and contents patterns..

[AJAX] Ajax Code E xamples.. [Book] About the book.. [CSS] CSS Code E xamples.. [DB] Sql Code E xamples.. [DEV] All development stor...

2016년 9월 6일 화요일

[JAVA] Baekjoon 각 자리수가 등차수열을 이루는 지 판별하는 함수를 구현해 문제를 해결해봅니다..

문제
어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 

입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.

출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

이번에는 등차수열이란다.. 아흠.. 등차수열 너무 오래전 얘기라 먼소린지도 모르겠고, 우선 개념부터 잡아야지 하면서 검색하고 있었다.. 그런데 역시나 내 스탈상 정의만 봐서는 이해가 안가고.. 혹시 누군가 부연 설명을 좀 해주지 않았을까 하는 마음에 더 검색을 해봤다..

그런데 역시나 위대한 분들은 세상에 너무 많으시더란 말이지.. occidere 님의 블로그를 가보니 해당 알고리즘에 대한 문제 풀이와 실질적으로 필요한 내용들에 대해서 정리를 잘 해주셨다.. 그래서 문제를 보면서 이해를 할 수 있었다.. 다만, 단번에 이해가 안가서 여러번 읽어봤다능.. ㅠㅜ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package step5;

import java.util.Scanner;

public class FuncHanSu {

    @SuppressWarnings("resource")
    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        
        //int valA = 110;
        int valA = scan.nextInt();
        int valK = 0;
        int valHan = 0;
        int varArr[] = new int[3];
  
        for(int i = 1; i <= valA; i++) {
            if(0 < i && i < 100) {
                valHan = i;
            
            } else if(i == 1000) {
                break;
           
            } else {
                valK = 0;
                int valT = i;
                while(valT > 0) {
                    varArr[valK] = valT % 10;
                    valT /= 10; valK++;
                }
                if(varArr[0] - varArr[1] == varArr[1] - varArr[2]) {
                    valHan++;
                }
            }
        }
        System.out.println(valHan);
    }

}//





댓글 없음:

댓글 쓰기