본문 바로가기
JS/백준

[백준JS] 1037. 약수

by 박기린 2023. 4. 25.

안녕하세요. 박기린 입니다.

백준 1037번 약수 문제를 풀어봅시다.

 

 

문제 링크

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

 


문제 해석

본문의 예제를 인용해서 설명하겠습니다.

 

 

예제의 답인 24의 약수는 위와 같습니다.

 

 

 

이 중 '1''답이 되는 약수'제외한 수들이 입력으로 주어집니다.

 

 

 

 

그리고 이 값들을 이용해서 '24'라는 답을 도출해내면 됩니다.

이 문제를 쉽고 빠르게 해결하는 방법으로, 하나의 간단한 수학 지식을 알면 됩니다.

 

 

 

 

 

약수의 양끝 수들을 곱해주면 정답이 나옵니다.

 

 

 

이런 식으로 말이죠.

 

 

문제에서 받은 입력값은 '1'과 '정답이 되는 수'가 제외된 상태로 주어집니다.

반대로 말하자면, 이 입력값들의 최대값과 최소값을 곱하면 정답이 나옵니다.

 

 

 


정답 코드

const fs = require("fs");
const [count, input] = fs
  .readFileSync("/dev/stdin")
  .toString()
  .trim()
  .split("\n");
const max = Math.max(...input.split(" ").map(Number));
const min = Math.min(...input.split(" ").map(Number));

console.log(max * min);

 

 


정답 코드 풀이

const max = Math.max(...input.split(" ").map(Number));
const min = Math.min(...input.split(" ").map(Number));

Math objectmax()와 min() 메소드를 이용해서, 입력받은 약수의 최대값과 최소값을 구합니다.

 

 

 

Math.max(값0, 값1, ... , 값N);
Math.min(값0, 값1, ... , 값N);

다만, Math.min()과 Math.max()는 쉼표로 구분된 값을 인수로 받습니다. 하나의 Array를 인수로 받지 않습니다. 

 

 

...input.split(" ").map(Number)

따라서 ...(전개 연산자)를 사용해서 Array로 된 값을 분해 해야 합니다.

전개연산자로 Array를 분해하기 전, map(Number)를 이용해서 모든 Array elements를 Number 타입으로 변환해줍시다.

Math.max()와 Math.min()은 Number 타입만을 인수로 받기 때문입니다.

 

 

 

console.log(max * min);

이제 max와 min을 곱한 후 출력하면 끝입니다.

 

반응형

'JS > 백준' 카테고리의 다른 글

[백준/JS] 2738. 행렬 덧셈  (0) 2023.11.23
[백준JS] 16139. 인간-컴퓨터 상호작용  (0) 2023.06.26
[백준JS] 13909. 창문 닫기  (0) 2023.04.19
[백준JS] 2485. 가로수  (0) 2023.04.18
[백준JS] 1735. 분수 합  (0) 2023.04.16