728x90
https://school.programmers.co.kr/learn/courses/30/lessons/135807
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
1. 철수와 영희의 각각의 카드 배열의 최대 공약수(GCD) 를 재귀를 이용하여 구한다.
2. 1번에서 구해진 철수와 영희의 최대 공약수가 조건에 따라 서로의 카드 숫자를 나눌 수 있는 지 확인하여 나눠지는 경우 최대 공약수 값을 0으로 저장한다.
3. 철수와 영희의 최대 공약수 중 최대 값을 구한다.
class Solution {
fun solution(arrayA: IntArray, arrayB: IntArray): Int {
var resultA = arrayA[0]
for (i in 1 until arrayA.size) {
resultA = getGCD(resultA, arrayA[i])
}
var resultB = arrayB[0]
for (i in 1 until arrayB.size) {
resultB = getGCD(resultB, arrayB[i])
}
for (i in 0 until arrayA.size) {
if (arrayA[i] % resultB == 0) {
resultB = 0
break
}
}
for (i in 0 until arrayB.size) {
if (arrayB[i] % resultA == 0) {
resultA = 0
break
}
}
return Math.max(resultA, resultB)
}
fun getGCD(a: Int, b: Int): Int {
return if (b == 0) a
else getGCD(b, a % b)
}
}
728x90
'알고리즘(w.KOTLIN) > 재귀' 카테고리의 다른 글
[백준][코틀린][2580] 스도쿠 (0) | 2023.03.08 |
---|---|
[백준][코틀린][16198] 에너지 모으기 (0) | 2023.03.03 |
[백준][코틀린][14888] 연산자 끼워 넣기 (0) | 2023.03.02 |