PS/LeetCode
1250. Check If It Is a Good Array - Streak 5
조금씩 차근차근
2025. 9. 18. 11:12
이 문제는 결국 양수와 음수의 조합으로 나타내진다.
이를 모듈러 연산으로 나타낼 수 없을까?
여기서 확장 유클리드 호제법이 적용 가능해진다.
gcd = 1인 조합이 하나라도 있으면 True
이다.
근데 우리 문제는, 다음과 같은 형태이다.
이걸 확장 유클리드 호제법의 형태로 바꿀 수 없을까?
둘을 더하면, 최대공약수는 약수로 남기고, 나머지는 더한 효과가 된다.
즉, 둘을 더해도 최대공약수는 무조건 남는다
최대공약수는 이 문제에서 지워야 하는 대상이므로,
전체의 최대공약수가 1이면 True
이고, 전체의 최대공약수가 1이 아니면 False
이다.
class Solution {
public boolean isGoodArray(int[] nums) {
int now = nums[0];
for(int i = 1; i<nums.length; i++){
now = gcd(now, nums[i]);
}
return now==1;
}
private int gcd(int a, int b){
if(b==0){
return a;
}
return gcd(b, a%b);
}
}