문제
코드
// 1. 최대, 최소값
function sol(input) {
const divisors = input[1].split(" ");
return Math.min(...divisors) * Math.max(...divisors);
}
// 2. 정렬을 해서 처음 인덱스, 마지막 인덱스를 이용해도 가능
function sol(input) {
const divisors = input[1].split(" ").sort((a, b) => a - b);
return divisors[0] * divisors[divisors.length - 1];
}
const input = [];
require("readline")
.createInterface(process.stdin, process.stdout)
.on("line", (line) => {
input.push(line);
})
.on("close", () => {
console.log(sol(input));
process.exit();
});
풀이
약수의 개수와 약수들이 주어진다.
N의 약수 A가 진짜 약수가 되려면, A는 1이 아니어야 하고, N이 아니어야 한다.
우선 10의 약수를 구해보자.
[1, 2, 5, 10] 이다.
20의 약수는
[1, 2, 4, 5, 10, 20] 이다.
30의 약수는
[1, 2, 3, 5, 6, 10, 15, 30] 이다.
1과 N을 제외한 약수들을 가지고 N을 구할 수 있다.
10은 2x5
20은 2x10, 4x5
30은 2x15, 3x10, 5x6 와 같이
N의 약수를 순서대로 나열했을 때 i번째 수와 뒤에서 i번째 수를 곱해주면 된다.
1번 풀이처럼 max, min 메서드를 이용해도 되고
2번 풀이처럼 약수의 배열을 오름차순 정렬 후 앞에서 1번, 뒤에서 1번 인덱스를 곱해줘도 되겠다.
'DS & Algorithm > baekjoon' 카테고리의 다른 글
[백준] 3055번 탈출 - JavaScript(NodeJS) (0) | 2021.07.07 |
---|---|
[백준] 1316번 그룹 단어 체커 - JavaScript(NodeJS) (0) | 2021.07.02 |
[백준] 1152번 단어의 개수 - JavaScript(NodeJS) (0) | 2021.07.01 |
[백준] 15990번 1, 2, 3 더하기 5 - JavaScript(NodeJS) (0) | 2021.06.09 |
[백준] 1157번 단어 공부 - JavaScript(NodeJS) (0) | 2021.06.09 |