Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 정수를 지정한 개수만큼 최대한 균등하게 나누는 방법

JavaScript에서 하나의 정수를 주어진 개수만큼 최대한 균등하게 나누려면 나머지 연산자(%), 즉 모듈러 연산자와 나눗셈을 함께 활용하면 됩니다. 값이 정확히 나누어 떨어지면 모든 조각의 크기가 같아지고, 나머지가 남는 경우에는 일부 조각에 1씩 추가로 분배하는 방식입니다.

예제 코드

var divideInteger = function(value, divide) {
    var num;
    var modular = value % divide;
    if(modular == 0){
        num = value/divide;
        sumOfDivideParts = Array(divide).fill(num);
    } else {
        num = (value-modular)/divide;
        sumOfDivideParts = Array(divide).fill(num);
        for(i=0;i<modular;i++){
            sumOfDivideParts[i] = sumOfDivideParts[i] + 1;
        }
        sumOfDivideParts.reverse()
    }
    return sumOfDivideParts;
}
var arrayValues = divideInteger(50, 8)
console.log(arrayValues);

코드 동작 원리

  • value % divide : 나눌 값을 개수로 나눈 나머지를 구합니다.
  • 나머지가 0이면 값이 정확히 나누어떨어지므로, 몫으로 배열 전체를 채우면 됩니다.
  • 나머지가 있으면 기본 몫으로 배열을 채운 뒤, 앞쪽 요소에 나머지만큼 1씩 더하고 reverse()로 순서를 뒤집어 작은 값이 먼저 오도록 정렬합니다.

실행 방법

위 프로그램을 실행하려면 다음과 같은 명령어를 사용하면 됩니다.

node fileName.js.

여기서는 파일 이름이 demo169.js라고 가정합니다.

출력 결과

PS C:\Users\Amit\javascript-code> node demo169.js
[
    6, 6, 6, 6,
    6, 6, 7, 7
]

위 예제에서는 50을 8개로 나눕니다. 50 ÷ 8의 몫은 6이고 나머지는 2이므로, 기본값 6으로 채운 배열의 앞 두 요소에 각각 1을 더해 최종적으로 [6, 6, 6, 6, 6, 6, 7, 7]이라는 결과가 출력됩니다. 이처럼 나머지 연산자를 활용하면 어떤 정수든 원하는 개수만큼 균등하게 분배할 수 있습니다.