[백준] - 단계별로 풀어보기(함수) 1065

김민경·2022년 4월 11일
0

백준

목록 보기
30/39

백준 1065번

한수

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


내가 작성한 코드

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

public class Main {

	public static int one(int n) {
		
		int count=0;
		if(n <100) { //100보다 작은 숫자면 그 수 그대로 출력하면 된다.
			return n;
		}
		
		else{ //100보다 큰 수이면
			count =99; //카운트를 99개 부터 시작
			
			for(int i=100; i<n+1; i++) {
				int a = i/100; //백의자리
				int b = (i%100)/10; //십의자리
				int c = (i%100)%10; //일의자리
				
				if((a-b)==(b-c)) {
					count++;
				}
			}	
		}
		return count;
	}
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		System.out.println(one(Integer.parseInt(br.readLine())));
	}
}


접근 방법

한수는 234, 258처럼 각 숫자 사이에 차이가 일정한 수열을 이루는 숫자를 의미한다.
1부터 9까지의 수는 그 숫자 자체로 수열이고 28은 두자리수의 차이 6이므로 숫자 자체가 수열이기 때문에 모두 한수이다.
세 자리수의 한수는 258 각 자리수가 3씩 차이 난다. 백,십,일 의자리수를 구해서 2-5 = -3 그리고 5-8 = -3 이렇게 순서대로 빼준 후 차이가 같으면 count에 1을 더해준다.
세자리 수는 입력 받은 수까지 한수의 개수를 구하기 위해 1-99까지 99개를 포함해야 하므로 count를 99부터 시작한다.

0개의 댓글

관련 채용 정보