[Baekjoon] 1037 - 약수

Chobby·2023년 11월 22일
1

Baekjoon

목록 보기
92/108

😀문제

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


😁입력

첫째 줄에 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

🤣출처

  • 문제를 번역한 사람: baekjoon
  • 빠진 조건을 찾은 사람: doju
  • 어색한 표현을 찾은 사람: jh05013

😃알고리즘 분류

  • 수학
  • 정수론

😎나의풀이

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split("\n")
const divisors = input.pop().split(" ").map(Number)
const maxNum = Math.max(...divisors)
for(let i = 2 ; ; i++) {
    const curN = maxNum * i
    const curDivisors = []
    for(let i = 2 ; i <= Math.floor(curN/2); i++) {
        if(curN%i === 0) curDivisors.push(i)
    }
    const canEveryDivise = divisors.every(a => curN % a === 0)
    const isSameDivisors = divisors.length === curDivisors.length
    if(canEveryDivise && isSameDivisors) {
        console.log(curN)
        return
    }
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글