Search

유한소수 판별하기

알고리즘
연습문제
플랫폼
프로그래머스
JCF
상태
해결
생성 일시
2023/12/24 10:09
최종 편집 일시
2023/12/25 07:18

문제 설명

해결과정

Solution.java

import java.util.*; class Solution { public int solution(int a, int b) { int answer = 0; // a의 약수 배열 int arr[] = intmeasure(a); // b의 약수 배열 int brr[] = intmeasure(b); // A와 B의 최대 공약수 int divisor = theGreatestCommonDivisor(arr, brr); // 분모(b)를 최대 공약수로 나눈다. b /= divisor; answer = primefactor(b); return answer; } public int primefactor(int b) { // System.out.print(b + " => "); while(b != 1) { if(b % 2 == 0) { b /= 2; } else if (b % 5 == 0) { b /= 5; } else { break; } } // System.out.println(b); if(b == 1) {return 1;} else {return 2;} } // 최대공약수 구하기 public int theGreatestCommonDivisor(int[] arr, int[]brr) { int i = 0; int j = 0; int num = 0; while(i < arr.length && j < brr.length) { if(arr[i] == brr[j]) { num = arr[i]; i++; j++; } else { if(arr[i] > brr[j]) { j++; } else { i++; } } } return num; } // 주어진 정수의 약수 구하기 public int[] intmeasure(int n) { String measure = ""; for(int i = 1; i <= n; i++) { if(n%i == 0) { measure += i + ","; } } String[] arrs = measure.split(","); int[] nums = new int [arrs.length]; for(int i = 0; i < arrs.length; i++) { nums[i] = Integer.parseInt(arrs[i]); } // for(String arr : arrs) { // System.out.print(arr + " "); // } // System.out.println(); return nums; } }
Java
복사