문제
주어진 정수들 중 입력 받은 수의 약수와 배수의 합을 각각 출력하라.
예를 들면,
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 |