하루 알고리즘(JS)

[바미] 약수

Bami 2024. 5. 30. 09:21
728x90
반응형

문제

https://www.acmicpc.net/problem/1037

 

코드

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');

const numDivisors = parseInt(input[0], 10);
const divisors = input[1].split(' ').map(Number);

const minDivisor = Math.min(...divisors);
const maxDivisor = Math.max(...divisors);

const N = minDivisor * maxDivisor;
console.log(N);

문제 해설

주어진 문제는 주어진 진짜 약수들을 통해 원래 수 𝑁을 찾아내는 것입니다.

 

여기서 진짜 약수란 1과 자신을 제외한 약수를 의미하는데 주어진 진짜 약수들 중 최댓값과 최솟값을 곱하면 원래의 수 𝑁을 구할 수 있습니다.

 

Math.min(...divisors)를 사용하여 주어진 진짜 약수들 중 최솟값을 찾았고, Math.max(...divisors)를 사용하여 주어진 진짜 약수들 중 최댓값을 찾았습니다.

 

시간 복잡도

시간 복잡도는 알고리즘이 입력의 크기에 따라 얼마나 빠르게 실행되는지를 나타냅니다

 

주어진 진짜 약수들을 읽고, 최솟값과 최댓값을 찾는 작업의 시간 복잡도는 𝑂(𝑛)이 됩니다.

 

여기서 𝑛은 진짜 약수의 개수입니다.

공간 복잡도

공간 복잡도는 알고리즘이 얼마나 많은 메모리 공간을 사용하는지 나타냅니다.

 

입력 데이터를 저장하는 데 사용하는 배열과 변수들이 있습니다.

공간 복잡도는 주어진 입력 크기에 비례하므로, 전체 공간 복잡도는 𝑂(𝑛)이 됩니다.

728x90
반응형