쉬어가는 날인가 보다!!
Notion에서 작성한 글이라, 여기에서 더 깔끔하게 보실 수 있습니다 😮😊
나누는 문제라 부동소수점 오차를 생각해야하나 했으나 그런 문제는 아니고 단순히 언어 처음 배울 때 나오는 연습문제 수준이었다.
return sum(arr)/len(arr)
오늘은 쉬어가는 날인가보다. 어제 미들러 문제의 기억,,, 때문에 엥??? 뭐지??? 혹시 Sliding Window?? Prefix Sum?? 뭔가 엄청난 게 있을 줄 알았는데 다른 언어에서 Integer overflow만 주의할 것 외엔 문제될 게 없어보였다.
return [x*i for i in range(1, n+1)]
철수/영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있는 수는 를 의미한다. 이를 , 라 하자.
여기서, , 에 대해 , 의 모든 수들을 나눌 수 없다면 두 중 큰 값을 return하면 된다. 만약 하나라도 나눌 수 있는 수가 존재한다면 대신 0을 return하고, 두 값의 대소를 비교하면 된다.
공약수까지 함께 비교할 필요 없이 로 상대의 의 각 수들에 대해 나눌 수 있는지 비교해도 된다.
Proof. 공약수들은 의 약수이므로, 가 어떤 수를 나눌 수 없으면, 그 의 모든 약수(공약수)도 그 수를 나눌 수 없다.
def gcd(a, b):
while b:
a, b = b, a%b
return a
def gcd_arr(arr):
ret = arr[0]
for i in range(1, len(arr)):
ret = gcd(ret, arr[i])
return ret
def x_gcd(gcd, arr):
if all(n%gcd != 0 for n in arr):
return gcd
return 0
def solution(arrayA, arrayB):
return max(x_gcd(gcd_arr(arrayA), arrayB), x_gcd(gcd_arr(arrayB), arrayA))