프로그래머스 | N개의 최소공배수

Algorithm 2019. 8. 22. 17:52
반응형

solution5 

최소공배수, 최대 공약수 구하기 

https://asce-hyunseung.tistory.com/32

 

[level 2] N개의 최소공배수

-LeastCommonMultiple.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public class LeastCommonMultiple { public int solution(int[] arr) { int answer=lcm(arr[0],arr[1])..

asce-hyunseung.tistory.com

 

문제 설명

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.

제한 사항

  • arr은 길이 1이상, 15이하인 배열입니다.
  • arr의 원소는 100 이하인 자연수입니다.

입출력 예

arrresult

[2,6,8,14] 168
[1,2,3] 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace _01
{
    class Program
    {
        static void Main(string[] args)
        {
            // int[,] v = new int[,]{ {1,4}, {3,4}, {3,10}};
            // var s = new Solution();
            // var result = s.solution(v);
            // foreach(var n in result){
            //     Console.WriteLine(n);
            // }
 
 
            // String[] s;
            // Console.Clear();
            // s = Console.ReadLine().Split(' ');
            // int n = Int32.Parse(s[0]);  //가로 
            // int m = Int32.Parse(s[1]);  //세로 
            // for(int row = 0; row<m; row++){
            //     for(int i = 0; i<n; i++){
            //         Console.Write("*");
            //     }
            //     Console.WriteLine();
            // }
 
 
            var s = new Solution();
            //var result = s.solution2(new []{4,1,3,2});
            // var result = s.solution2(new []{4,1,3});
            // Console.WriteLine(result);
 
 
            // var result = s.solution3(987);
            // Console.WriteLine(result);
 
 
            // var result = s.solution4(5000);
            // Console.WriteLine(result);
 
            var result = s.solution5(new[]{2,6,8,14});
            Console.WriteLine(result);
 
            
        }
    }
    public class Solution
    {
        public int[] solution(int[,] v)
        {
            Console.WriteLine(v[00+ " , " + v[1,0+ " , " + v[2,0]);
            Console.WriteLine(v[01+ " , " + v[1,1+ " , " + v[2,1]);
 
            int[] answer={v[00] ^ v[1,0] ^ v[2,0],v[01] ^ v[1,1] ^ v[2,1]};
            return answer;
        }
 
        public bool solution2(int[] arr){
            var result = true;
            var list = arr.ToList();
            list.Sort();
            int i = 1;
            foreach(var n in list){
                if( i != n ){
                    return false;
                }
                i++;
            }
            return result;
        }
 
        public int solution3(int n){
            var answer = 0;
            var str = n.ToString();
            for(int i = 0; i<str.Length; i++){
                answer += int.Parse(str[i].ToString());
            }
 
            return answer;
        }
 
        public int solution4(int n)
        {
            int answer = 0;
            var base2 = Convert.ToString(n, 2);
            var str = base2.Replace("0""");
            answer = str.Length;
            return answer;
        }
 
        public int solution5(int[] arr) {
            int answer = lcm(arr[0], arr[1]);
 
            for(int i = 2; i<arr.Length; i++){
                answer = lcm(answer, arr[i]);
            }
            return answer;
        }
 
        //최대 공약수
        public int gcd(int a, int b){
            while(b != 0){
                var temp = a % b;
                a = b;
                b = temp;
            }
            return a;
        }
 
        //최소 공배수 
        public int lcm(int a, int b){
            return (int)a * b / gcd(a,b);
        }
    }
}
 
 
 
반응형

'Algorithm' 카테고리의 다른 글

프로그래머스 | 모의고사  (0) 2019.08.22
n사이에 소수 개수 구하기  (0) 2019.08.22
LeetCode | Two Sum  (0) 2019.08.21
베스트앨범  (0) 2019.08.20
위장  (0) 2019.08.20
: