본문 바로가기

알고리즘/백준

[백준/1065/Java]한수

[백준/1065/Java]한수

 

풀이

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

public class Main {
	public static void main(String[] args) throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int num = Integer.parseInt(br.readLine());
		int result = 0;
		if(num > 99) {
			result += 99;
			for (int i = 100; i <= num; i++) {
				if(i == 1000) break;
				result += han(i);
			}
		} else {
			result = num;
		}
		
		bw.write(Integer.toString(result));
		bw.flush();
		bw.close();
	}
	
	public static int han(int num) {
		// 자릿수 찾기
		int a = num / 100 % 10; // 첫번째 자릿수
		int b = num / 10 % 10;  // 두번째 자릿수
		int c = num % 10;       // 세번째 자릿수
		
		if(b * 2  == a + c) {
			return 1;
		}
		return 0;
	}
}

 

후기

한수가 무엇인지 제대로 이해를 해야 풀 수 있었습니다.

예를들어 123의 경우 1씩 증가하는 등차수열이기 때문에 한수입니다.

또한 321의 경우는 1씩 감소하기 때문에 마찬가지로 한수입니다.

하지만 101은 반복되는 수처럼 보이지만 감소되고 증가되기 때문에 한수가 아닙니다.

 

그리고 주어진 정수가 2자리의 경우는 무조건 한수입니다.

그 이유는 2자리이기 때문에 증가폭의 기준이 없기때문입니다.

 

그렇기 때문에 1부터 99까지는 무조건 한수로 처리하고

100번째부터는 한수인지 아닌지를 처리하는 로직을 추가하였습니다.

728x90
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준/1978/Java]소수찾기  (0) 2022.05.03
[백준/10250/Java]ACM호텔  (0) 2022.05.01
[백준/2869/Java]달팽이는 올라가고 싶다  (0) 2022.04.24
[백준/1712/Java]손익분기점  (0) 2022.04.21
[백준/5622/Java]다이얼  (0) 2022.04.17