https://www.acmicpc.net/problem/4673
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
해석 및 팁
이 문제는 함수를 통해 1부터 10000까지 검사한 뒤 해당 수를 생성자로 하는 수가 있으면 그 수를 거르는 문제입니다. d함수를 선언해서 생성자를 만든 후에 1부터 10000까지의 배열에 해당 값만큼 증가시킵니다. 마지막으로 배열의 값이 0인 경우를 출력해 주면 됩니다.
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] arr = new int[10001];
for(int i = 1; i <= 10000; i++) {
int n = d(i);
if(n <= 10000) arr[n]++;
}
for(int i = 1; i <= 10000; i++) {
if(arr[i] == 0) System.out.println(i);
}
}
public static int d(int num) {
int result = num;
while(num > 0) {
result += num%10;
num /= 10;
}
return result;
}
}
'백준' 카테고리의 다른 글
백준 1316 그룹 단어 제커(Java) (0) | 2023.01.19 |
---|---|
백준 1978 소수 찾기(Java) (0) | 2023.01.19 |
백준 10769 행복한지 슬픈지(Java) (0) | 2023.01.19 |
백준 3985 롤 케이크(Java) (0) | 2023.01.19 |
백준 9933 민균이의 비밀번호(Java) (0) | 2023.01.18 |