[백준] Java 4375 1

urzi·2022년 8월 8일
0

PS

목록 보기
34/36

문제

https://www.acmicpc.net/problem/4375

알고리즘

수학

풀이

2와 5로 나누어 떨어지지 않는 수이면서 1의 자리수인 숫자만 확인해야 한다.
그래서 for문을 돌리면서 이전 값에 10을 곱하고 1을 더해주어야 1의 자릿수만 확인할 수 있다.
설명은 코드에 자세하게 첨부하였다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

class Main {

    public static void main(String[] args) throws IOException {

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {

            int n = scanner.nextInt();
            int num = 0;
            for (int i = 1; ; i++) {

                // 1로 이루어진 숫자중 가장 작은 숫자를 구해야 한다.
                // 그렇기 때문에 10을 곱해서 자릿수를 계속 늘려주고 1로 이루어진 숫자를 만들기 위해 +1을 해준다.
                // 이전에 계산한 num을 이용해서 연산에 사용한다.
                num = num * 10 + 1;

                // 현재 계산한 num을 담아서 다음 연산에 사용한다.
                num %= n;

                // 만약 num이 0이면 정답이므로 for문을 멈춘다.
                if (num == 0) {

                    // i는 1의 자릿수와 똑같기 때문에 i를 출력한다.
                    System.out.println(i);
                    break;
                }
            }
        }

    }
}
profile
Back-end Developer

0개의 댓글