[프로그래머스] 숫자 카드 나누기 (JS)

hhkim·2023년 10월 31일
0

Algorithm - JavaScript

목록 보기
171/188
post-thumbnail

풀이 과정

  • 철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 영희가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a
    => a는 철수 카드의 최솟값보다 같거나 작음
  • 영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고, 철수가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a
    => a는 영희 카드의 최솟값보다 같거나 작음
  1. 각 배열의 최솟값부터 시작해서 감소하면서 반복
  2. 현재 배열의 모든 수를 나눌 수 있지만, 다른 배열의 수는 하나도 나누지 못하는 수가 있다면 바로 리턴
    끝까지 없으면 0 리턴
  3. 두 배열에 대한 결과 중 더 큰 값을 리턴

코드

function solution(arrayA, arrayB) {
  arrayA.sort((a, b) => a - b);
  arrayB.sort((a, b) => a - b);

  const findCandidate = (curr, other) => {
    for (let i = curr[0]; i > 1; --i) {
      if (curr.every((n) => n % i === 0) && !other.some((n) => n % i === 0))
        return i;
    }
    return 0;
  };
  return Math.max(findCandidate(arrayA, arrayB), findCandidate(arrayB, arrayA));
}

🤔

혼자 무식하게 풀려다 역시나 시간 초과가 나서 다른 사람의 힌트를 참고했다.
공약수 공배수 이런 개념 나오면 갑자기 취약해지는 기분...
사실 모든 경우의 수를 구해야 하는 것이 아니기 때문에 그렇게 어렵게 생각할 필요가 없는 문제였다.

0개의 댓글