반응형
문제
숫자 카드 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/135807
예시 코드
function solution(arrayA, arrayB) {
let gcdA = arrayA[0];
for (let i = 1; i < arrayA.length; i++) {
gcdA = gcd(gcdA, arrayA[i]);
}
let gcdB = arrayB[0];
for (let i = 1; i < arrayB.length; i++) {
gcdB = gcd(gcdB, arrayB[i]);
}
let canA = true;
let canB = true;
for (let i = 0; i < arrayB.length; i++) {
if (arrayB[i] % gcdA === 0) {
canA = false;
break;
}
}
for (let i = 0; i < arrayA.length; i++) {
if (arrayA[i] % gcdB === 0) {
canB = false;
break;
}
}
if (canA && canB) return Math.max(gcdA, gcdB);
else if (canA) return gcdA;
else if (canB) return gcdB;
else return 0;
}
function gcd(a, b) {
while (b) {
let temp = b;
b = a % b;
a = temp;
}
return a;
}
풀이
다음 조건을 만족하는 가장 큰 양의 정수 a를 찾는 문제입니다.
- 철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 영희가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a
- 영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고, 철수가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a
각 배열의 최대공약수를 구한 후 조건을 만족하는 가장 큰 수를 반환합니다.
만약 없다면 0을 반환합니다.
'Coding Problem' 카테고리의 다른 글
[프로그래머스] 디펜스 게임 (0) | 2024.11.22 |
---|---|
[프로그래머스] 미로 탈출 (0) | 2024.11.21 |
[프로그래머스] 카카오 - 거리두기 확인하기 (0) | 2024.11.16 |
[프로그래머스] 등굣길 (0) | 2024.11.12 |
[프로그래머스] 데브매칭 - 다단계 칫솔 판매 (0) | 2024.11.10 |