import java.util.*
class Solution {
fun solution(arr: IntArray): Int {
val aq = LinkedList<Int>(arr.map { it }) as Queue<Int>
var answer = aq.poll()
while (aq.isNotEmpty()){
answer = forSol(answer,aq.poll())
}
println(answer)
return answer
}
fun forSol(i1:Int, i2:Int): Int {
val mutableList = mutableListOf<Int>()
var ii1 = i1
var ii2 = i2
var count =1
mutableList.add(1)
while (count != ii1 && count != ii2){
count++
if(ii1%count ==0 &&ii2%count ==0){
ii1 /=count
ii2 /= count
mutableList.add(count)
count =1
}
}
mutableList.add(ii1)
mutableList.add(ii2)
return mutableList.fold(1){acc, i -> acc*i }
}
}
한꺼번에 하려고 했다가 너무 복잡해지는 것 같아서 2개씩 최소공배수를 구하는 방식으로 진행함..
다른분의 해결법은.. 내꺼가 더 빠르게 답이 나온걸로 위안삼자..
이 풀이를 이해를 할 수가 없다ㅣㅣ
class Solution {
fun solution(arr: IntArray): Int {
var answer = 1
while(true) {
var x = 0
for(a in arr) x += answer%a
if(x==0) return answer
answer++
}
return answer
}
}
다른 방법으로는
fun gcd(a: Int, b: Int): Int {
var maximum = max(a, b)
var minimum = min(a, b)
if (minimum == 0) {
return max(a, b)
} else {
return gcd(minimum, maximum % minimum)
}
}
fun lcm( a:Int, b:Int):Int {
var maximum = max(a, b)
var minimum = min(a, b)
return (a * b) / gcd(a, b)
}
위와 같이 해서도 구하더라.
'코딩테스트(코틀린) 기초부터 연습' 카테고리의 다른 글
프로그래머스 오픈채팅방 (0) | 2021.04.21 |
---|---|
프로그래머스 예상 대진표 (0) | 2021.04.21 |
프로그래머스 피보나치 (0) | 2021.04.20 |
프로그래머스 괄호 회전하기 (0) | 2021.04.20 |
이진탐색 -효율성을 높이자 (0) | 2021.04.19 |