개발자가 되고 싶은 개발자

신박한 공배수 풀이 기록 본문

Dev/Algorithm

신박한 공배수 풀이 기록

Fullth 2024. 2. 20. 22:54

Preface

  • 가독성이 떨어지지만, 사고력 측면에서 생각하지 못한 방식이어서 기록합니다.

문제

  • n,m이 number의 공배수이면 1 아니면 0을 return.

풀이

  • 둘 다 공배수일 경우
    • 나머지가 둘 다 0 이기 때문에 ( 0 | | 0 ) 연산은 false가 됩니다.
    • 괄호 바깥 부분의 부정연산자(!)로 인해 true가 됩니다.
    • + 연산자로 인해 논리연산자 true가 숫자형으로 변환되어 1로 반환됩니다.
  • 둘 다 공배수가 아닐 경우
    • 각 나머지 연산에서 나머지가 존재하면 0이 아니게 되므로 값이 1 이상이 되어 true가 됩니다.
    • 괄호 바깥 부분의 부정연산자(!)로 인해 false가 됩니다.
    • + 연산자로 인해 논리연산자 false가 숫자형으로 변환되어 0으로 반환됩니다. 
function getCommonMultiple(number, n, m) {
  return +!(number % n || number % m);
}