inblog logo
|
LHS's Study Space
    알고리즘문제풀기프로그래머스

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

    lhs's avatar
    lhs
    Jan 08, 2025
    [프로그래머스] 숫자 카드 나누기(135807)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/135807
     

    1. 문제 풀이 아이디어

    • 정렬한 후 최소값 중 큰 값부터 2까지 계산하면 문제를 해결할 수 있다.

    2. 나의 정답 코드

    class Solution { public int solution(int[] arrayA, int[] arrayB) { Arrays.sort(arrayA); Arrays.sort(arrayB); int max = Math.max(arrayA[0], arrayB[0]); for (int i = max; i > 1; i--) { boolean check = true; for (int j = 0; j < arrayA.length; j++) { if (arrayA[j] % i != 0) { check = false; break; } } if (check) { for (int j = 0; j < arrayB.length; j++) { if (arrayB[j] % i == 0) { check = false; break; } } if (check) { return i; } } check = true; for (int j = 0; j < arrayB.length; j++) { if (arrayB[j] % i != 0) { check = false; break; } } if (check) { for (int j = 0; j < arrayA.length; j++) { if (arrayA[j] % i == 0) { check = false; break; } } if (check) { return i; } } } return 0; } }

    3. 정리

    • 두 배열을 정렬한 뒤, 최소값 중 더 큰 값을 max에 저장한다.
    • max부터 2까지 반복하며, check 변수를 사용해 다음 조건을 검사한다.
      • i가 arrayA의 모든 요소를 나누어 떨어뜨리며, 동시에 arrayB의 어떤 요소도 나누어 떨어뜨리지 않는 경우
      • 또는, i가 arrayB의 모든 요소를 나누어 떨어뜨리며, 동시에 arrayA의 어떤 요소도 나누어 떨어뜨리지 않는 경우
    • 이러한 조건을 만족하는 i를 찾으면 반환하고, 찾지 못하면 0을 반환한다.
     
    Share article
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리

    LHS's Study Space

    RSS·Powered by Inblog