본문 바로가기
짱구 굴리기 (Q) -

[백준 1065] 한수

by skwzz 2019. 1. 29.

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


소스코드 

public class Q1065 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int n = in.nextInt(); // 1<= N <=1000
		int count = 0;
		
		for(int i=1; i<=n; i++) {
			if(isHansu(i)) {
				count++;
			}
		}
		
		
		System.out.print(count);
	}
	
	public static boolean isHansu(int n) {
		// 1자리, 2자리 수는 한수
		if(n<100) {
			return true;
		}
		//1000은 한수 아님
		if(n==1000) {
			return false;
		}
		// 100~999 한수 판별
		int[] arr = new int[3];
		
		for(int i=0; i<3; i++) {
			arr[i] = Integer.toString(n).charAt(i)-'0';
		}
		
		if(arr[0]-arr[1] == arr[1]-arr[2]) {
			return true;
		}else {
			return false;
		}
		
	}
}

일단 99 이하의 자연수는 모두 등차수열을 이루고, 1000은 등차수열이 아니므로 따로 처리를 해주고,
100 부터 999까지는 배열에 숫자를 하나씩 넣어주고 그 차이를 비교하는 식으로 했습니다.
다른 분들의 코드를 보니 배열에 넣고 막 하나씩 뽑아서 차이를 구하는 방법보다
직접 숫자를 나누어서 해결하는 식을 쓰는 분들이 많았습니다.
왜 이런걸 생각 못했징

'짱구 굴리기 (Q) - ' 카테고리의 다른 글

[프로그래머스] 프린터  (0) 2019.04.02
[백준 11866] 조세퍼스 문제 0  (0) 2019.04.01
[백준 1920] 수 찾기  (0) 2019.01.25
[백준 1012] 유기농 배추  (0) 2019.01.25
[백준 1475] 방 번호  (0) 2019.01.25