코딩 테스트(Coding Test)/백준
[백준] 4673번 (셀프 넘버)
배씌
2023. 5. 28. 19:10
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
1. 알고리즘
- 셀프 넘버 함수 d(n)
입력 받은 수와 각 자리 수를 더해주기 위해 % 연산자를 이용하여 더해주고 sum을 return 함.
static int d(int n) {
int sum = n;
while(n != 0) {
sum += (n%10); // 일의 자리 수
n /= 10;
}
return sum;
}
- main 함수
크기가 10000인 배열을 하나 만든 후, 생성자가 없는 셀프 넘버의 인덱스 출력
int arr[] = new int[10000];
for(int i=0; i<10000; i++) {
arr[i] = 0;
}
for(int i=1; i<=10000; i++) {
if(d(i)<10000)
arr[d(i)] = 1;
}
for(int i=1; i<10000; i++) {
if(arr[i] == 0)
System.out.println(i);
}
2. 코드
public class Main {
static int d(int n) {
int sum = n;
while(n != 0) {
sum += (n%10); // 일의 자리 수
n /= 10;
}
return sum;
}
public static void main(String[] args){
int arr[] = new int[10000];
for(int i=0; i<10000; i++) {
arr[i] = 0;
}
for(int i=1; i<=10000; i++) {
if(d(i)<10000)
arr[d(i)] = 1;
}
for(int i=1; i<10000; i++) {
if(arr[i] == 0)
System.out.println(i);
}
}
}