본문 바로가기
백준 알고리즘 자바

17427번

by leko 2023. 7. 6.

시간 초과된 나의 코드

package boj;

import java.util.Scanner;

public class BOJ_17427 {
	
	public static int printYaksuSum(int i){
		int yaksuSum = 0; //print약수가 호출될때마다 초기화해주어야한다
		for(int t=1;t<=i;t++) {
			if(i%t==0) {
				yaksuSum+=t;
			}
			else {
				continue;
			}
		}
		return yaksuSum;
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int sum=0;
		for(int i=1;i<=n;i++) {
			sum+= printYaksuSum(i);
		}
		System.out.println(sum);

	}

}

해결하기

7이하의 약수

1 - 1 2 - 1,2 3-1,3 4-1,2,4 5-1,5 6-1,2,3,6 7-1,7

1의 개수 : 7개

2의 개수 : 7/2 = 3개 

3의 개수 : 7/3 = 2개 

4의 개수 : 7/4 = 1개

5의 개수 : 7/5 =1개

6의개수 : 7/6 =1개

7의 개수 : 7/7 =1개

 

이 규칙을 알면 쉽게 풀린다~!

package boj;

import java.util.Scanner;

public class BOJ_17427Re {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		long sum=0;
		for(int i=1;i<=n;i++) {
			int count = n/i;
			sum += (long) count * i;
		}
		System.out.println(sum);
	}

}

'백준 알고리즘 자바' 카테고리의 다른 글

3085번  (0) 2023.07.07
2309번  (0) 2023.07.06
1929번  (0) 2023.07.06
1978번  (0) 2023.07.06
1037번  (0) 2023.06.27