Algorithm/JUNGOL

[정올] 1071 : 약수와 배수 (*)

Gyuri 2022. 1. 20. 17:08

문제

주어진 정수들 중 입력 받은 수의 약수와 배수의 합을 각각 출력하라.

 

예를 들면,

6개의 정수 2, 3, 5, 12, 18, 24 가 주어지고 12를 입력 받은 경우 

12의 약수는 2, 3, 12 이고

12의 배수는 12, 24 이다.

입력형식

첫 줄에 정수의 개수 n (1<= n <=40)을 입력 받는다.

둘째 줄에는 n개의 정수를 한 줄에 입력 받는다. 

셋째 줄에는 약수와 배수를 구할 정수 m(1<=m<=100)을 입력 받는다.

출력형식

첫 줄에는 정수 m의 약수의 합을 둘째 줄에는 정수 m의 배수의 합을 출력한다.

입력 예

6
2 3 5 12 18 24
12

출력 예

17
36
 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt(); // 정수의 개수
        int num[] = new int[n]; 

        for (int i = 0; i < n; i++) {
            num[i] = sc.nextInt(); // n개의 정수 입력받기
        }

        int m = sc.nextInt(); // 약수/배수 구할 정수
        int measure = 0; // 약수의 합 
        int multiple = 0; // 배수의 합
        
        for(int i=0; i<num.length; i++) {
            // m의 약수 합
            if(m % num[i] == 0) measure += num[i];
            // m의 배수 합
            if(num[i] % m == 0) multiple += num[i];
        }

        System.out.println(measure);
        System.out.println(multiple);
    }
}

▷ 처음에 너무 어렵게 생각을 했는데, 풀고 나니 쉬운 문제였다. 약수와 배수를 출력하는 걸로 착각해서 약수/배수를 각각 저장해줄 arrayList를 생성하고 하나하나 비교하려 했는데, 약수과 배수의 합만 구하면 되기 때문에 간단하게 int형으로 약수/배수의 합을 저장해줄 변수만 생성하면 됨

 

▶ measure(약수의 합), multiple(배수의 합) 변수를 생성한 후, num 배열에 있는 숫자들중에 m의 약수/배수가 있으면 해당 변수에 더해주기만 하면 됨.

'Algorithm > JUNGOL' 카테고리의 다른 글

[정올] 2809 : 약수  (0) 2022.01.20
[정올] 1402 : 약수 구하기 (*)  (0) 2022.01.20
[정올] 1430 : 숫자의 개수 (**)  (0) 2022.01.20
[정올] 1692 : 곱셈  (0) 2022.01.17
[정올] 1339 : 문자삼각형2  (0) 2022.01.17