-
[프로그래머스] 숫자 카드 나누기 LV2Python/Programmers 2023. 8. 8. 22:46728x90
문제)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
알고리즘)
1. 각 리스트의 최대 공약수를 구하기(math.gcd 함수)
2. 각각 구한 최대 공약수로 서로의 숫자카드를 나눠 조건에 해당하는지 판단
3. 조건에 만족시 가장 큰 수 max 출력 그 외 0 출력
* 유클리디안 알고리즘(최대 공약수 구하기)
- 두 수 U, V가 있을 때 (U > V) 최대 공약수 구하기
- U - V와 V의 최대 공약수는 동일하며 해당 과정을 통해 U와 0이 될 때 최대공약수는 U가 된다.
1. U < V 라면 두수 U, V를 바꾼다.
2. U = U - V
3. U가 0이 될 때까지 반복 (그러나 1이 출력 될때는 최대 공약수는 X)
똑같은 개념이지만 나머지를 사용하는 방법
1. U < V 라면 두수 U, V를 바꾼다.
2. U = U % V
3. U가 0이 될 때까지 반복 (그러나 1이 출력 될때는 최대 공약수는 X)
코드)
import math def solution(arrayA, arrayB): answer = 0 a, b = 0, 0 for i in range(len(arrayA)): a = math.gcd(a, arrayA[i]) for j in range(len(arrayB)): b = math.gcd(b, arrayB[j]) for z in range(len(arrayA)): if arrayA[z] % b == 0: b = 1 if arrayB[z] % a == 0: a = 1 if a == 1 and b ==1: return 0 else: return max(a,b)
728x90'Python > Programmers' 카테고리의 다른 글
[프로그래머스] 당구 연습 LV2 (0) 2024.02.23 [프로그래머스] 광물 캐기 LV2 (0) 2024.02.07 [프로그래머스] 미로 탈출 LV2 (0) 2023.02.19 [프로그래머스] 호텔 대실 LV2 (0) 2023.02.19