심심한잉여의 잡동사니

[프로그래머스] 숫자 카드 나누기 레벨2 본문

코딩일기/코딩테스트 연습

[프로그래머스] 숫자 카드 나누기 레벨2

심심한잉여 2022. 11. 17. 09:28
반응형
import java.util.*;

class Solution {
 	public int solution(int[] arrayA, int[] arrayB) {

		Arrays.sort(arrayA);
		Arrays.sort(arrayB);

		List<Integer> listA = convertList(arrayA);
		List<Integer> listB = convertList(arrayB);
		
		int resultA = result(listA,arrayB);
		int resultB = result(listB,arrayA);
		
		return Math.max(resultA, resultB);
		

	}
	public List<Integer> convertList(int[] intArr){
		List<Integer> result = new ArrayList<Integer>();
		int min = intArr[0];
		for(int i = min; i>2;i--) {
			boolean flag = true;
			for(int j : intArr) {
				if(j % i != 0) {
					flag = false;
					break;
				}
			}
			if(flag) {
				result.add(i);
			}
		}
		
		return result;
		
	}
	
	public int result(List<Integer> intList,int[] intArr) {
		for(int i : intList) {
			boolean flag = true;
			for(int j : intArr) {
				if(j % i == 0) {
					flag = false;
					break;
				}
			}
			if(flag) {
				return i;
			}
		}
		return 0;
	}
}

정렬하여 가장 큰 순서부터 구할 수 있도록 함

convertList 메소드를 통해 A(철수)에 있는 카드를 선별 및 List로 변경

List로 변환 및 선별 시킨 A를 통해 B에 나누지 못하는 가장 큰 값을 구해 리턴(정렬 되어 있었기 때문에 가장 큰 수 부터 비교 가능)

그렇게 구한 값이 B의 가장 작은 값보다 크면 이후 연산 없이 리턴

아니라면 B(영희)의 카드로도 양의 정수를 구해 큰 값을 추출

 

반응형