저장을 습관화
프로그래머스 LV.0 공배수 본문
프로그래머스 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
'코딩 테스트 > 프로그래머스 - 자바스크립트' 카테고리의 다른 글
프로그래머스 LV.0 조건 문자열 (0) | 2023.09.10 |
---|---|
프로그래머스 LV.0 flag에 따라 다른 값 반환하기 (0) | 2023.09.10 |
프로그래머스 LV.0 n의 배수 (0) | 2023.09.10 |
프로그래머스 LV.0 숨어있는 숫자의 덧셈 (1) (0) | 2023.09.10 |
프로그래머스 LV.0 편지 (0) | 2023.09.10 |