본문 바로가기
Algorithm/PROGRAMMERS[Java]

Lv1. N개의 최소공배수

by 씨니 2022. 5. 2.
728x90

▶ 문제

 

▶ 풀이방법

import java.util.*;
class Solution {
    public int solution(int[] arr) {
        int answer = 0;
        Arrays.toString(arr);
		
		//소수 판별
        boolean[] ck = new boolean[101];
        for(int i = 2; i < ck.length; i++){
            for(int j = i*2; j < ck.length; j+=i){
                if(ck[j] == true) continue;
                ck[j] = true;
            }
        }
		
        LinkedList<Integer> list = new LinkedList<>(); //곱해져야 할 값 list에 담기위함.
        for(int i = 0; i < arr.length; i++) {
            for(int l : list) {
        			if(arr[i] % l == 0) arr[i] /= l;
        		}
        	if(ck[arr[i]] == false) {
        		list.add(arr[i]);
        	}else {
        		while(arr[i] > 1) {
        			if(arr[i] % 2 == 0) {
        				list.add(2);
        				arr[i] /= 2;
        			}else if(arr[i] % 3 == 0){
        				list.add(3);
        				arr[i] /= 3;
        			}else if(arr[i] % 5 == 0) {
        				list.add(5);
        				arr[i] /= 5;
        			}else if(arr[i] % 7 == 0) {
    					list.add(7);
    					arr[i] /= 7;
        			}else {
        				list.add(arr[i]);
        				arr[i] /= arr[i];
        			}
        		}
        	}
        }
        
        //모든 리스트에 있는 값 곱함
        for(int l : list) {
        	if(answer == 0) answer += l;
        	else answer *=l;
        }
        
        return answer;
    }
}

- 나는 위의 방식으로 풀었는데 다른사람들 풀이보면 gcd() 최대 공약수를 활용해서 풀었다,, 배우자배우자ㅏㅇ!!

728x90