본문 바로가기

알고리즘(백준 등) 공부/백준(자바)

백준 1323번: 숫자 연결하기

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

 

주어진 수 N, K에 대해서 N을 몇번 이어붙여야 K로 나누어 떨어지는지를 출력하는 문제이다. N의 범위가 커서 단순히 연결만 하면 오버플로우가 발생할 수 있다. 따라서 수를 나눈 나머지를 추적해야 한다.

 

N을 한 번 더 붙인다는 것은 (N * 10^N의 자릿수 + N)  이 되며, 이것의 나머지를 계속 추적하면 된다. 또한, 나머지의 종류는 K가지 이므로 이 연산의 수행 횟수는 K번을 넘지 않는다. 코드는 다음과 같다.

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

public class 숫자연결하기1323 {
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        long n = Long.parseLong(st.nextToken()), k = Long.parseLong(st.nextToken());
        
        long power = 1;
        long temp = n;
        while (temp > 0) {
            power *= 10;
            temp /= 10;
        }
        
        long r = 0;
        long answer = -1;
        
        for (long i = 1; i <= k; i++) {
            r = (r * power + n) % k;
            if (r == 0) {
                answer = i;
                break;
            }
        }
        
        System.out.print(answer);
    }
}

'알고리즘(백준 등) 공부 > 백준(자바)' 카테고리의 다른 글

백준 1331번: 나이트 투어  (0) 2026.03.20
백준 1327번: 소트 게임  (0) 2026.03.18
백준 1322번: X와 K  (0) 2026.03.16
백준 1316번 그룹 단어 체커  (0) 2026.03.15
백준 1313번 합성소수  (0) 2026.03.14