프로그래머스 | N개의 최소공배수
Algorithm 2019. 8. 22. 17:52solution5
최소공배수, 최대 공약수 구하기
https://asce-hyunseung.tistory.com/32
문제 설명
두 수의 최소공배수(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;
// 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[0, 0] + " , " + v[1,0] + " , " + v[2,0]);
Console.WriteLine(v[0, 1] + " , " + v[1,1] + " , " + v[2,1]);
int[] answer={v[0, 0] ^ v[1,0] ^ v[2,0],v[0, 1] ^ v[1,1] ^ v[2,1]};
return answer;
}
public bool solution2(int[] arr){
var result = true;
var list = arr.ToList();
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();
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]);
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 |