Hayden's Archive

[알고리즘] 백준 1065번 : 함수 본문

Algorithm

[알고리즘] 백준 1065번 : 함수

_hayden 2020. 6. 11. 13:57

알고리즘 문제 출처 : https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 ��

www.acmicpc.net

 

내가 작성한 코드

먼저 한수가 맞는지 아닌지 boolean 값을 리턴해주는 함수를 작성한다. temp를 10으로 나눈 나머지를 순차적으로 배열에 저장하는데 temp는 10으로 나눈 몫으로 계속해서 갱신해주다가 0이 되었을 때 반복문을 끝낸다. 지표가 되는 변수 index를 활용하여 배열 save를 반복문으로 돌리는데 현재 순서 인덱스값에서 다음 순서 인덱스값을 빼며 공차 d가 나오는지 확인한다.

함수 작성을 마쳤으면 메인 메소드에서 반복문을 돌리며 1부터 n까지의 한수 개수를 변수 count에 누적해가면 된다.

import java.util.Scanner;

public class Main {

	private static boolean checkNum (int num) {
		boolean check = true;
		int[] save = new int[4];
		int temp = num;
		int index = save.length;
		for(int i=0; i<save.length; i++) {
			if(temp == 0) {
				index = i;
				break;
			}
			save[i] = temp%10;
			temp = temp/10;
		}
		int d = save[0]-save[1];
		for(int i=0; i<index-1; i++) {
			if(save[i]-save[i+1]!=d) {
				check = false;
				break;
			}
		}
		return check;
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int count = 0;
		for(int i = 1; i <= n; i++) {
			if(checkNum(i)==true) count++;
		}
		System.out.println(count);
	}
}