지극히 개인적인 개발블로그
백준 알고리즘 1065: 한수(java) 본문
좀 어려운 문제였습니다. 틀리기도 엄청 틀렸던거 같네요.
한수의 개념자체를 쉽게 이해하지 못했습니다.
첫번째 예제에서 힌트를 주고 있습니다. 110이하의 세자리수에서는 한수가 없습니다. 그런데 110을 입력하면 99가 나옵니다. 100미만의 수는 전부 한수로 인정한다는 의미입니다.
100이상의 수를 판별하는지는 크게 어렵지 않았습니다. 등차수열의 기본법칙인
n2 * 2 = n1 + n3인지만 확인하면 됩니다. 이하는 코드입니다.
import java.util.Scanner;
public class Sol_1065 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int hanChk = 0;
if(n < 100)
System.out.println(n);
else
{
hanChk = 99;
for(int i=100; i<=n; i++)
{
if(Hansu(i) == true)
hanChk++;
}
if(n == 1000)
hanChk--;
System.out.println(hanChk);
}
}
private static boolean Hansu(int n){
int n1 = n / 100 % 10; //100의 자리수
int n2 = n / 10 % 10; //10의 자리수
int n3 = n % 10; //1의 자리수
if(n2 * 2 == n1 + n3)
return true;
else
return false;
}
}