-
문제 6 - 최대공약수알고리즘/알고리즘 기초 100제 2020. 7. 8. 23:23
문제 : 두 수의 최대 공약수를 구하세요.
Scanner sc = new Scanner(System.in); int n1 = sc.nextInt(); int n2 = sc.nextInt(); List<Integer> list = new ArrayList<Integer>(); for(int i=2; i<=n1; i++) { if(n1 % i == 0) { list.add(i); } } List<Integer> list2 = new ArrayList<Integer>(); for(Integer i : list) { if(i<=n2 && (n2 % i == 0)) { list2.add(i); } } int maxValue = 0; for(Integer i : list2) { maxValue = Math.max(maxValue, i); } if(maxValue != 0) { System.out.println("최대 공약수 : " + maxValue); }else { System.out.println("없음"); } // 강의 정답 /* * 최대 공약수를 알려면, 두 수중 큰 수를 알아야함. * 큰 수와, 작은수가 해당 값(최대 공약수)으로 나누어 지는지 확인 */ int small; int big; if(n1 > n2) { small = n2; big = n1; }else { small = n1; big = n2; } int gcd = 1; // 최대공약수 for(int i=1; i<=small; i++) { if(big % i == 0 && small %i == 0) { gcd = i; } } System.out.println(gcd);
강의 정답이 훨씬 깔끔하네. 두 수중 큰 수를 알면 더 쉽게 문제를 해결 할 수 있다.
출처 : https://www.youtube.com/watch?v=jdnGckTvZ64&list=PLVoihNyHW4xkm_KJ8_N8X7F6EQP4uSRyR&index=7
'알고리즘 > 알고리즘 기초 100제' 카테고리의 다른 글
문제8번 - 팩토리얼 구하기 (0) 2020.07.15 문제 7 - 소수 판별 (0) 2020.07.08 문제 5 - 대소문자 변환 (0) 2020.06.30 문제 4번 - 10진수를 2진수로 변환 (0) 2020.06.30 알고리즘 3번 - 최빈수 구하기 (0) 2020.06.21