반응형
https://school.programmers.co.kr/learn/courses/30/lessons/135807
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
철수가 가진 카드들을 모두 나누면서, 영희가 가진 모든 숫자카드를 나눌 수 없는 숫자
영희가 가진 카드들을 모두 나누면서, 철수가 가진 모든 숫자카드를 나눌 수 없는 숫자
이 두가지 조건 중 하나라도 만족하는 숫자를 골라 return 한다.
만약 없다면 0을 return한다.
제한 사항
1 ≤ arrayA의 길이 = arrayB의 길이 ≤ 500,000
1 ≤ arrayA의 원소, arrayB의 원소 ≤ 100,000,000
arrayA와 arrayB에는 중복된 원소가 있을 수 있습니다.
문제 풀이
최대공약수를 구해서 문제를 해결했다.
arrayA의 최대공약수 a
arrayB의 최대공약수 b
이 두가지를 구해서
arrayA는 b로 나눠서 0이 되는지 확인하고
arrayB는 a로 나눠서 0이 되는지 확인해서
0이 되는경우 cheA나 cheB를 0으로 변경해서 확인한다.
만약 둘다 0인 경우 cheA(0)을 return 하고
아니라면 a,b중 큰 값을 return하면 끝!
import math
def solution(arrayA, arrayB):
answer = 0
a=arrayA[0]
b=arrayB[0]
for i in range(len(arrayA)):
a=math.gcd(a,arrayA[i])
b=math.gcd(b,arrayB[i])
print(a,b)
cheA=1
cheB=1
for i in range(len(arrayA)):
if arrayA[i] % b==0:
cheA=0
if arrayB[i] % a==0:
cheB=0
if cheA==0 and cheB==0:
return cheA
else:
return max(a,b)
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] lv.1 공원산책 python (0) | 2023.04.17 |
---|---|
[프로그래머스] lv.1 신고 결과 받기 python (1) | 2023.04.16 |
[프로그래머스] lv.1 기사단원의 무기 python (0) | 2023.04.09 |
[프로그래머스] lv.2 숫자 변환하기 python (0) | 2023.04.09 |
[프로그래머스] lv.2 테이블 해시 함수 python (0) | 2023.04.09 |