봉봉의 개인 블로그

[백준 알고리즘 14928] 큰 수(BIG) 본문

알고리즘 문제/백준 알고리즘

[백준 알고리즘 14928] 큰 수(BIG)

봉봉이네 2021. 8. 6. 19:00

링크 : https://www.acmicpc.net/problem/14928

 

14928번: 큰 수 (BIG)

첫째 줄에 제연이가 가장 좋아하는 수 N이 주어진다. (N ≤ 101,000,000)

www.acmicpc.net

CODE

이전 코드

import java.util.Scanner;
import java.math.BigInteger;

public class Main {
	public static void main (String[] args) {
    	Scanner scanner = new Scanner(System.in);
        BigInteger num = scanner.nextBigInteger();
        scanner.close();
        System.out.println(num.remainder(BigInteger.valueOf(20000303)));
    }
}

처음에는 단순하게 큰수라서 BigInteger 클래스를 활용하여 나머지 연산을 진행하였다.

하지만 제출 결과 시간 초과가 나오게 되었다.

구글링을 하다 보니 나머지 연산을 하는 법이 따로 있어 해당 알고리즘으로 변경해서 풀어보았다.

이후 코드

import java.util.Scanner;

public class Main {
	public static void main (String[] args) {
    	Scanner scanner = new Scanner(System.in);
        String input = scanner.next();
        long temp = 0;
        for (int i = 0; i < input.length(); i++) {
        	temp = (temp * 10 + (input.charAt(i) - '0')) % 20000303;
        }
        
        System.out.println(temp);
    }
}

느낌점

코드를 단순하게 생각해서 처음엔 풀었을때 시간이 초과하는걸 보았다. 나머지 연산을 큰수에 대해서는 나머지 연산에 대한 속도 또한 체크해서 문제 접근과 수학적 접근이 필요해 보인다.

Comments