반응형
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;
}
}
일반적인 풀이
반응형
'문제풀이' 카테고리의 다른 글
[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 |