유클리드 호재법에 관한 문제이다.
나는 일단 이런 부분은 몰랐기 떄문에 재귀로 해결을 하려고 하엿다.
- 내가 짠 코드이다.
결과적으로는 테스트를 통과 하지 못했다..
부분 집합으로 들어오는 값을 모두 곱하면서 비교를 하였다.
재귀가 if문을 타게 되면 들어오는 sum값을 비교해 point를 쌓고
point가 length값이 된다는 조건은 모두 통과 하였다는 조건이기 떄문에
만약 그렇다면 최소값을 배정하는 식으로 문제를 해결을 하였다.
하지만 통과를 하지 못했다.... ㅠㅠ
- 인터넷을 뒤적거려서 찾은 코드이다.
유클리드 호제법이라는 것을 활용을 하였다고 한다.
getGCD : 최대 공약수를 구하는 곳이다.
lcm : 최대 공배수를 구하는 곳이다.
출처 : https://velog.io/@yerin4847/W1-유클리드-호제법
두 수의 최대공약수를 구하는 알고리즘
이다.
보통 소인수 분해를 하게 되면 구할수 있지만 값이 커지게 되면 어려워 진다는 단점이 있다.
이떄 활용하는 방법이다!!
일단 MOD연산에 대해서 알고 있어야 하는데
나머지를 구하는 이 연산을 계속 하면서 나머지가 0이 되었을떄를 찾는다.
1112 mod 695 = 417
695 mod 417 = 278
417 % 278 = 139
278 % 139 = 0
이떄 139가 최대 공약수 이다.