[프로그래머스] Lv2 N개의 최소공배수

changi123·2023년 8월 25일
0
post-thumbnail

문제설명

코드

import java.util.*;
class Solution {
    public int solution(int[] arr) {
    int answer = 0;
        
        Stack<Integer> st = new Stack();
        
        for(int i=  0 ; i<arr.length;i++) {
        	st.push((int)arr[i]);
        }
        
        while(st.size()>1) {
        	int a = (int)st.pop();
        	int b = (int)st.pop();
        	
        	int max = Math.max(a, b);
        	int min = Math.min(a, b); 
        	int lcm = max;
        	while(true) {
        		if(lcm % min== 0) {
        			st.push(lcm);
        			break;
        		}
        		lcm +=max;
        	}
        	
        }
        
        answer = st.pop();
        return answer;
    }
}

코드 설명

(1) 스택 객체 st 에 매개변수 arr 각 값을 넣어준다.
(2) 스택 객체 st 에서 pop() 메소드를 활용하여 두 개씩 꺼내 최소공배수를 구하고 다시 그 최소공배수를 스택 객체 st에 push()
(3) 이 과정을 반복하여 마지막에 남은 1개의 값이 N개의 숫자의 최소공배수

느낀점

최소공배수를 구할 때 스택을 활용하여 풀도록 하자. 여기서 주의할건 조건에서 100가까이 되는 숫자들로만 이루어진 배열이 매개변수로 주어진다면 저장되는 값이 int 정수형의 범위를 벗어남으로 이럴 경우 long 타입을 이용하자!

profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보