섭스토리

백준 1037번 <약수> 본문

백준 풀이 🍪

백준 1037번 <약수>

섭웨이 2022. 8. 13. 13:57

백준 1037번 <약수>

브론즈 1

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

 

1037번: 약수

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

www.acmicpc.net

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

let num = input[0];
let res = input[1].split(" ");

res.sort(function (a, b) {
    return a - b;
});

console.log(res[0] * res[res.length - 1]);

제가 짠 코드입니다.

1과 자기 자신(N)을 제외한 약수들이 두 번째 줄에 입력됩니다.

따라서 약수들을 오름차순으로 정렬하고, [0] 인덱스 값과 마지막 인덱스 값을 곱해주면 N이 나오겠죠?

이렇게 접근하면 16과 64같은 제곱수도 구할 수 있습니다.

 

sort()로 배열 내 요소들을 오름차순으로 정렬해줍니다.

 

사실 이 sort() 함수가 직관적으로 이해하기 어려운 면이 있어서 애를 먹었는데,

찾아봐도 명확하게 설명해주는 곳이 없더라구요.

 

a, b를 인자로 받고, a - b 가 양수면 a와 b의 자리를 바꾸고, 음수면 자리를 그대로 유지하는 것 같은데...

 

자세한 건 나중에 더 찾아보고 정리해서 올려드릴게요!

 

다른 분들이 짜신 코드와 비슷해서 다른 분 코드는 올리지 않겠습니다.

 

'백준 풀이 🍪' 카테고리의 다른 글

백준 1436번 <영화감독 숌>  (0) 2022.08.15
백준 1181번 <단어 정렬>  (0) 2022.08.15
백준 1152번 <단어의 개수>  (0) 2022.08.13
백준 1076번 <저항>  (0) 2022.08.12
백준 1075번 <나누기>  (0) 2022.08.11