[白俊]4673号:セルフサービス番号


📍 質問する



💡 に近づく


1から10000をチェックした後、その数を生成者として使用できる場合は、その数をフィルタリングすることで問題を解決します.関数セクションの複文は、他の人のコードを参照します.
*構造
1.1から10000までの繰り返し文では、d関数に数値を入れ、その数値をコンストラクション関数とする数値を返します.
2.return数はコンストラクション関数が存在する数を使用し、d関数が返す数nはboolean配列のインデックスとして、その位置をtrueに変更します.
3.boolean配列にfalse要素を出力する位置(インデックス).

👩‍💻 コード#コード#

public class Main {
	public static void main(String[] args) {
 
		boolean[] check = new boolean[10001];	// 1부터 10000이므로
 
		for (int i = 1; i < 10001; i++){
			int n = d(i);
		
			if(n < 10001){	// 10000 이하의 수만 필요
				check[n] = true;
			}
		}
 
		StringBuilder sb = new StringBuilder();
        
		for (int i = 1; i < 10001; i++) {
			if (!check[i]) {	// false 만 출력
				sb.append(i).append('\n');
			}
		}
		System.out.println(sb);
	}
 
 
 
	public static int d(int number){
		int sum = number;
    
		while(number != 0){
			sum = sum + (number % 10); // 첫 째 자리수
			number = number/10;	// 10을 나누어 첫 째 자리를 없앤다
		}
    
		return sum;
	}
}    

🔗 リンク


https://www.acmicpc.net/problem/4673
注意:https://st-lab.tistory.com/53