백준 신기한 수

KIMYEONGJUN·2025년 4월 25일
0
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

첫 번째 줄에 정수 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;
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글