본문 바로가기
  • 개발 삽질 블로그
프로그래밍/백준 문제풀이

백준 17427: 약수의 합 2

by 갹둥 2022. 8. 18.

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

 

17427번: 약수의 합 2

두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더

www.acmicpc.net

각각 f(N)을 저장하는 배열을 만들었고 1부터 N까지 각 i의 배수 인덱스에 있는 배열 자리에 i를 더하는 것을 반복했다.

이 때 g(N)을 저장하는 변수는 int로 하면 오버플로우가 발생할 수 있으니 long 타입으로 선언해주었다.

import java.util.*;

public class Main {
	public static void main(String[] args){
			int N;
			long gn=0;
			Scanner sc = new Scanner(System.in);
			
			N=sc.nextInt();
			int[] fn = new int[N+1];
			
			for(int i=1; i<N+1; i++) {
				for(int j=1; i*j<N+1; j++)
					fn[i*j]+=i;
				gn+=fn[i];
			}
			
			System.out.println(gn);
	  }
}