문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
풀이
이 문제는 각 수를 String으로 변환하여 길이를 얻고 각 자리별로 숫자를 비교해주면 되는 문제입니다.
코드
import java.util.*;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int ans = 0;
for(int i=1; i<=N; i++)
if(isHanSoo(i)) ans +=1;
System.out.println(ans);
}
private static boolean isHanSoo(int num) {
String str = Integer.toString(num);
if(str.length() <= 2) return true;
int diff = str.charAt(1) - str.charAt(0);
for(int i=2;i<str.length();i++)
if(diff != str.charAt(i) - str.charAt(i-1)) return false;
return true;
}
}
<출처>
반응형
'백준' 카테고리의 다른 글
[BOJ] 백준 1620번: 나는야 포켓몬 마스터 이다솜 (0) | 2022.01.09 |
---|---|
[BOJ] 백준 1074번: Z (0) | 2022.01.08 |
[BOJ] 백준 18111번: 마인크래프트 (0) | 2022.01.06 |
[BOJ] 백준 15829번: Hashing (0) | 2022.01.05 |
[BOJ] 백준 1259번: 팰린드롬수 (0) | 2022.01.04 |
댓글