[Algorithm] 나눗셈, 나머지 연산자 없이 나머지 값 구하기

Yalstrax·2021년 6월 2일
1

Algorithm

목록 보기
14/17
post-thumbnail

나눗셈(Division)

나눗셈(Division) : 나눗셈은 수학에 곱셈의 역연산인 산술 연산이다. 때로는 빼기를 반복하는 것으로도 생각할 수 있다. - 출처

일반적으로, 어떤 두 값의 나눗셈을 통해 몫을 구하거나, 나머지 값을 구하고 싶을 땐 Javascript의 나눗셈 연산자(/)와 나머지 연산자(%)를 사용하면 간편하게 구할 수 있습니다.

그러나, 위 두 개의 연산자 없이 두 값을 나누고, 그 나머지 값을 반환하는 문제를 어떻게 풀 수 있을까요?

나눗셈은 뺄셈을 반복하는 것으로도 표현할 수 있습니다.
곱셈이 덧셈의 연장이라면, 나눗셈은 뺄셈의 연장입니다.

아주 간단하게, 102의 나눗셈을 실행하면

const division = 10 / 2 ; // 몫은 5, 나머지는 0

이 됩니다.

위 식의 의미를 뜯어보면,

102씩 나누어보자!
나누어보니, 한 묶음이 2인 묶음이 5개가 나온다!
남는건 없다!

가 되겠습니다.

즉, 수식으로 다시 풀어보자면

10 -2 -2 -2 -2 -2 = 0; // 10 /2 와 같다.

이렇게 나눗셈을 뺄셈으로 풀 수 있습니다.

나머지(Remainder)

그렇다면, 나머지 연산자 % 와 나눗셈 연산자/를 사용하지 않고, 나머지를 구하는 방법은 어떻게 될까요?

  1. number1라는 변수를 number2로 나누기 위해 매개변수를 선언합니다.
  2. 그리고, 나눗셈을 수행하는 수(?) 인 number2가 0일 경우, 어떤 수도 0으로 나눌 수 없습니다. 이 때의 조건을 선언합니다.
  3. 반복문을 사용하여, 나눗셈을 당하는 수(?) 인 number1number2로 뺄셈을 수행합니다.
  4. number1number2보다 값이 작아지면, 반복을 종료합니다.
  5. 그 때의 number1 값이 나머지 값이 되겠습니다.

구현

function getRemainderWithMinus(number1, number2){
  if (number2 === 0) {
    return '어떤 수도 0으로 나눌 수 없습니다.'
  }
  while (number1 >= number2) {
    number1 = number1 - number2;
  }
  return '나머지 : ' + number1
}

Javascript로 위와 같이 구현할 수 있습니다.

크롬 개발자 도구의 Console을 확인해보면,

위와 같이 확인할 수 있습니다.

while반복문을 순환할 때 마다, number1number2의 뺄셈을 반복하며,
더 이상 반복을 수행할 수 없을 때의 값이 나머지 값이 되겠습니다.

긴 글 읽어주셔서 감사합니다! 🙏

profile
즐겁다면 그것만으로 만만세!

0개의 댓글