Algorithm_javascript/18. 심화 2

# 백준 1037번 약수 (javascript, node.js)

luminouswy 2023. 7. 31. 14:05
반응형

백준 1037번 약수 (javascript, node.js)

문제

  • 백준 1037번 약수 보러 가기
  • 양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.
 

1037번: 약수

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되

www.acmicpc.net


입력

  • 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.

출력

  • 첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.

예제입력 1

2
4 2

예제출력 1

8

예제입력 2

1
2

예제출력 2

4

예제입력 3

6
3 4 2 12 6 8

예제출력 3

24

예제입력 4

14
14 26456 2 28 13228 3307 7 23149 8 6614 46298 56 4 92596

예제출력 4

185192

문제풀이

  • N을 구하기 위해서 는 가장 작은 진짜 약수와 가장 큰 진짜 약수를 곱하면 됨
  • 문제가 길긴 하지만 크게 신경쓸거 없이 최댓값과 최소값을 구해서 곱해주면 되는 문제
// 1037번 약수

// 가장 작은 진짜 약수와 가장 큰 진짜 약수를 곱하면 N을 구할수 있다.
// 입력 값을 숫자형으로 변경해줘야 최댓값이랑 최소값을 구할 수 있음

const fs = require("fs");
const file = process.platform === "linux" ? "dev/stdin" : "./text.txt";
const input = fs.readFileSync(file).toString().trim().split("\n");

const t = parseInt(input[0]);
let n = 0;

// input[1]을 쪼개서 숫자형으로 변경해줌
const arr = input[1].split(" ").map(Number);

const max = Math.max(...arr);
const min = Math.min(...arr);

n = min * max;

console.log(n);