본문 바로가기
알고리즘/백준

백준 1065번 - 한수 (Java8)

by latissimus 2021. 9. 18.

 

https://www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

분류 : 단계별 문제 - 함수

소요 시간 : 30분 이상

 

실행 코드 :

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
	int idx = 0;
	

	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int num = Integer.parseInt(br.readLine());
		int countHan =0;
		for(int i=1; i<=num; i++) {
			countHan += checkHan(i+"");
		}
		
		System.out.println(countHan);
	}
	
	public static int checkHan(String num) { 2자리 이하는 모두 1 반환, 3자리 이상은 검증 후 한수이면 1반환
		int idx =1;
		char[] arr = num.toCharArray();
			if(num.length()<=2) {
				idx = 1;
			}
			else{
				for(int i=0; i<arr.length-2; i++) {
					idx =1;
					int x1 = Character.getNumericValue(arr[i]);
					int x2 = Character.getNumericValue(arr[i+1]);
					int x3 = Character.getNumericValue(arr[i+2]);
					
					if(x1 - x2 != x2 - x3) { //각 자리의 차가 같지 않다면
						idx = 0;
						break;
					}
				}
			} 
			return idx;
	}
}

풀이 과정 : toCharArray 활용해서 각 자리수를 나눈 후, 각 자리수를 비교해서 한수이면 1을 반환하는 checkHan 함수를 만들었다. 실행 하는 main함수 부분에서 입력 부분을 잘못해놓아서 한참 헤맸다.

댓글