내가 생각했을때 문제에서 원하는부분
첫 번째 줄에 정수 N (1 ≤ N ≤ 10,000,000) 하나가 주어진다.
N 이하인 신기한 수의 개수를 정수로 출력한다.
내가 이 문제를 보고 생각해본 부분
digitSum 함수는 입력 받은 정수의 각 자리수를 모두 더해 반환한다.
1부터 N까지 반복하면서 각 수의 자리수 합을 구하고, 그 수가 자리수 합으로 나누어지는지 확인한다.
조건에 맞으면 카운트를 증가시킨 후 최종적으로 결과를 출력한다.
코드로 구현
package baekjoon.baekjoon_28;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
// 백준 17618번 문제
public class Main1003 {
public static void main(String[] args) throws IOException {
// 버퍼드 리더, 라이터 생성
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int count = 0;
for(int i = 1; i <= N; i++) {
int sum = digitSum(i);
if(i % sum == 0) {
count++;
}
}
bw.write(String.valueOf(count));
bw.newLine();
bw.flush();
bw.close();
br.close();
}
// 각 자리수의 합을 구하는 메서드
private static int digitSum(int num) {
int sum = 0;
while (num > 0) {
sum += num % 10;
num /= 10;
}
return sum;
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.