728x90
반응형
1. 문제 설명
반응형
2. 풀이과정
해당 문제는 두 조건 중 하나라도 만족하는 가장 큰 양의 정수를 구하는 문제이다.
각 조건을 만족하는지 판별하는 방법은 각 카드 리스트의 최대 공약수를 구하여 구한 최대 공약수를 다른 리스트의 카드 값에 나누어 봤을 때 모두 나누어 떨어지지 않으면 된다.
각 리스트의 최대 공약수를 구할 때는 math 라이브러리의 gcd() 함수를 사용한다.
그렇게 구한 각 리스트의 최대 공약수를 다른 리스트의 값들과 모두 나누어 0이면 True를, 0이 아니면 False 값으로 저장한 후 0이 아닌 값(False)의 개수가 해당 리스트의 카드 개수와 동일하면 해당 최대 공약수가 조건을 만족하는 수가 된다.
각 리스트 별로 조건을 만족하는지 판별하고 조건을 만족하는 최대 공약수 중 큰 값을 출력하면 된다.
- 최대 공약수를 구해주는 gcd() 함수를 가진 math 라이브러리를 불러온다. import math
- 철수의 카드 값들의 최대 공약수를 저장할 변수를 생성하고 초기화한다. maxGCD_A = 0
- 철수의 카드 값들을 하나씩 불러와 for a in arrayA
- 이전까지 수의 중 최대공약수와 해당 수의 최대 공약수를 구한다. maxGCD_A = math.gcd(maxGCD_A, a)
- 영희의 카드 값들의 최대 공약수를 저장할 변수를 생성하고 초기화한다. maxGCD_B = 0
- 영희의 카드 값들을 하나씩 불러와 for b in arrayB
- 이전까지 수의 최대 공약수와 해당 수의 최대 공약수를 구한다. maxGCD_B = math.gcd(maxGCD_B, b)
- 영희 카드 값들의 최대 공약수를 가지고 철수 카드 값들을 모두 나누어 보고 그 값이 나누어 떨어지면 True를, 나누어 떨어지지 않으면 False 값을 저장한 리스트를 생성한다. resultA = list(a % maxGCD_B == 0 for a in arrayA)
- 만약 철수 카드가 모두 나누어 떨어지지 않았다면 조건을 만족한 것이므로 if (resultA.count(False) == len(arrayA))
- 현재 정답과 나눈 최대 공약수 중 큰 값을 정답에 저장한다. answer = max(answer, maxGCD_B)
- 철수 카드 값들의 최대 공약수를 가지고 영희 카드 값들을 모두 나누어 보고 그 값이 나누어 떨어지면 True를, 나누어 떨어지지 않으면 False 값을 저장한 리스트를 생성한다. resultB = list(b % maxGCD_A == 0 for b in arrayB)
- 만약 영희 카드가 모두 나누어 떨어지지 않았다면 조건을 만족한 것이므로 if (resultB.count(False) == len(arrayB))
- 현재 정답과 나눈 최대 공약수 중 큰 값을 정답에 저장한다. answer = max(answer, maxGCD_A)
3. 소스코드
import math
def solution(arrayA, arrayB):
answer = 0
maxGCD_A = 0
for a in arrayA:
maxGCD_A = math.gcd(maxGCD_A, a)
maxGCD_B = 0
for b in arrayB:
maxGCD_B = math.gcd(maxGCD_B, b)
resultA = list(a % maxGCD_B == 0 for a in arrayA)
if (resultA.count(False) == len(arrayA)):
answer = max(answer, maxGCD_B)
resultB = list(b % maxGCD_A == 0 for b in arrayB)
if (resultB.count(False) == len(arrayB)):
answer = max(answer, maxGCD_A)
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 섬 연결하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.04.28 |
---|---|
[프로그래머스] 줄 서는 방법 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.04.25 |
[프로그래머스] 배달 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.04.21 |
[프로그래머스] 징검다리 건너기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.04.19 |
[프로그래머스] 시소 짝꿍 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.03.18 |
[프로그래머스] 마법의 엘리베이터 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2024.02.04 |
[프로그래머스] 보석 쇼핑 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.17 |
[프로그래머스] 호텔 대실 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.11.15 |