코딩테스트/Baekjoon
[백준/JAVA] 1065번: 한수
희동츄루리
2023. 8. 16. 14:05
728x90
import java.util.Scanner;
public class Main{
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(hansu(sc.nextInt()));
sc.close();
}
public static int hansu(int num) {
int cnt = 0;
if(num<100) {
return num; // 1~99는 99개의 한수로 친다. -> 예제) 입력 : 101, 출력 : 99
}else {
cnt = 99; // 100 이후의 숫자는 99 + x 로 생각한다.
for(int i=100; i<=num; i++) { // i가 100부터 num(입력한 숫자)까지의 범위
int a = i/100; // 백의 자리 숫자 : 210/100 = 2
int b = (i/10)%10; // 십의 자리 숫자 : (210/10)%10 = 1
int c = i%10; // 일의 자리 숫자 : 210%10 = 0
if((a-b)==(b-c)) { // 등차수열의 규칙을 성립하는 경우, 99에 하나씩 더해준다.
cnt++;
}
}
}
return cnt; // 전체 등차수열의 조건을 성립하는 숫자의 개수를 반환한다.
}
}
- 등차수열로 성립되는 숫자?
- 1~99 : 99개
- EX) 입력 : 210 ⇒ 출력 : 105
- 1~99의 99 개와 210, 111, 123, 135, 147, 159 의 6개 더해서 105개!
- 한수를 구하는 함수에서 하는 일!
- 1 ≤ num ≤ 99 → num 출력
- num ≥ 100 → 백, 십, 일의 자리로 나누어 각 자리 수가 등차수열의 조건을 성립하는지 확인
- (99 + 등차수열을 만족하는 수의 개수) 반환