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]이라는 결과가 출력됩니다. 이처럼 나머지 연산자를 활용하면 어떤 정수든 원하는 개수만큼 균등하게 분배할 수 있습니다.