:ledger: 문제 설명

정수 numbern, m이 주어집니다. numbern의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.

:one: 제한사항

  • -10 ≤ number ≤ 100
  • 2 ≤ n, m ≤ 10

:two: 입출력 예

n n m result
60 2 3 1
55 10 5 0

:three: 입출력 예 설명

:pushpin: 3-1) 입출력 예 설명 #1

60은 2의 배수이면서 3의 배수이기 때문에 1을 return합니다.

:pushpin: 3-2) 입출력 예 설명 #2

55는 5의 배수이지만 10의 배수가 아니기 때문에 0을 return합니다.

:four: 프로그래머스에서 제공한 코드

처음 프로그래머스에서 작성된 코드는 아래와 같다.

function solution(number, n, m) {
    var answer = 0;
    return answer;
}

:ledger: 문제 풀이


const solution = (number, n, m) => (number % n === 0 && number % m === 0) ? 1 : 0

:one: 함수 선언

  • 화살표 함수를 사용하여 number, n, m 매개변수를 받는다.

:two: 풀이

  • numbern 의 배수인지 확인하기 위해 number & n === 0을 작성한다.
  • numberm 의 배수인지 확인하기 위해 number & m === 0을 작성한다.
  • 두 조건이 맞을 경우란 내용이 있어서 삼항 연산자를 사용했다. ( 조건 ? 참일 때 실행 : 거짓일 때 실행 )
  • n의 배수이면서 m의 배수일 경우를 구하기 위해 조건위치에 조건문을 통해 작성했다. (number % n === 0 && number % m === 0)
  • numbernm의 배수일 경우 1을 반환, 0일 경우 0을 반환한다.

:three: 결과 반환

  • number에 60, n에 2, m에 3을 대입할 60은 2와 3의 배수이기에 1을 반환한다.
  • number에 55, n에 10, m에 5을 대입할 55는 5의 배수지만 10의 배수가 아니기에 삼항 연산자의 조건이 false가 되어 0을 반환한다.

:four: 실행

  • number는 60, n은 2, m은 3을 대입할 경우 삼항 연산자의 조건이 true가 되어 solution 함수는 1을 반환한다.
  • number는 55, n은 10, m은 5를 대입할 경우 삼항 연산자의 조건이 false가 되어 solution 함수는 0을 반환한다.

:fire: 다른 사람의 풀이 참고

수학을 잘 하는 사람이 정말 많다.
전혀 생각지도 못한 방법으로 문제를 푸는데.. 논리부정(?)풀이 방식과 대부분 조건문을 통해 문제를 풀었다.

// [5명] 논리 부정을 사용한 풀이 과정
function solution(number, n, m) {
  return +!(number % n || number % m);
}

// [6명] 나와 비슷한 삼항 연산자를 사용한 풀이 과정
const solution = (num, n, m) => (
    num % n === 0 && num % m === 0
    ? 1
    : 0
)

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges