저장을 습관화

프로그래머스 LV.0 공배수 본문

코딩 테스트/프로그래머스 - 자바스크립트

프로그래머스 LV.0 공배수

ctrs 2023. 9. 10. 17:28

프로그래머스 LV.0 공배수

https://school.programmers.co.kr/learn/courses/30/lessons/181936

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 명

공배수


2. 문제 설명

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


3. 제한 사항

- 10 ≤ number ≤ 100

- 2 ≤ n, m < 10


4. 예시

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


5. 기본 제공 코드

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


6. 제출한 내 답

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

 

6-2. VSC에 작성한 내용

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

// 테스트
console.log(solution(60, 2, 3));
console.log(solution(55, 10, 5));

// console.log(solution());


7. 특이사항

없음


8. 다른 사람이 작성한 답

8-1. 논리연산자

function solution(number, n, m) {
  return +!(number % n || number % m);
}

'!'는 논리 not 연산자이다. true를 false로, false를 true로 바꾼다

+는 숫자로 형변환하는 연산자이다.

+ 양 옆에 있는 두 피연산자 중 하나가 문자열이라면
결과는 문자열이 되겠지만

형변환에 쓰이는 +는 다른 데이텨 유형을 숫자로 형변환한다.
예시)
let num = "42";
console.log(+num); // 42
console.log(typeof +num); // number

let str = "Hello";
console.log(+str); // NaN
console.log(typeof +str); // number

따라서 다시 코드를 읽어보면

+!로 먼저 값을 부정하고, 그 다음에 숫자로 변환한다.

 

이렇게 함으로 'number % n || number % m'의 결과가 0이면(number가 n, m으로 모두 나누어 떨어져 계산의 결과가 0이면)

'0은 falsy한 값이다.'의 규칙과 함께 아래와 같은 흐름이 된다.

console.log(0 || 0); // 0

console.log(!(0 || 0)); // true

console.log(+!(0 || 0)); // 1

 

console.log(!(false || false)); // true
console.log(false || false); // false

console.log(+!(false || false)); // 1
console.log(+(false || false)); // 0