반응형
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
1. 문제 추상화
입력받은 수보다 같거나 작은 수 중, 각 자리 수가 등차수열을 이루는 수(한수)의 개수를 구하시오.
2. 알고리즘
나의 풀이
반복문을 돌려 1의 자리부터 하나씩 체크한다.
1. current = num % 10, next = (num/10)%10 이면 d = next - current이고 nextnext = next + d 이다.
2. 다음 자리수로 이동하면 next가 current가 된다.
3. 이전 자리수에서의 nextnext와 현재 자리수의 next가 일치해야 등차수열이다.
import java.util.Scanner;
public class Main1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int result = countHanNumber(num);
System.out.println(result);
}
public static int countHanNumber(int num) {
int count = 0;
for(int i=1; i<=num;i++) {
if(isHanNumber(i)) {
count++;
}
}
return count;
}
public static boolean isHanNumber(int num) {
boolean isFirst = true;
int current = 0;
int next = 0;
int nextnext = 0;
int difference = 0;
while( num > 0 ) {
current = num%10;
next = (num/10)%10;
num /= 10;
if(num != 0) {
difference = next - current;
}else {
return true;
}
if(isFirst) {
nextnext = next + difference;
}else {
if(nextnext != current + difference) {
return false;
}else {
nextnext = next + difference;
}
}
isFirst = false;
}
return true;
}
}
일반적인 풀이
[백준] 1065번 : 한수 - JAVA [자바]
https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌
st-lab.tistory.com
반응형
'문제풀이' 카테고리의 다른 글
[JAVA] 백준 1157번 단어 공부 : 이해하기 쉬운 코드란? (0) | 2021.07.11 |
---|---|
[JAVA] 백준 10809번 알파벳 찾기 : 아스키코드 (0) | 2021.07.11 |
[JAVA] 백준 3052번 나머지 : 중복값 제거 (0) | 2021.07.10 |
[JAVA] 백준 1546번 평균 : 교환, 결합, 분배법칙 (0) | 2021.07.10 |
[JAVA] 백준 2884번 알람시계 : 시간 (0) | 2021.07.10 |