1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다.
두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
#제한사항
0 <numer1, denom1, numer2, denom2 < 1,000
# 첫 시도 -> 테스트 케이스 5개/15개 성공
def solution(numer1, denom1, numer2, denom2):
answer = [0, 0]
if denom1%denom2 ==0:
answer[0] = numer1 + numer2*(denom1/denom2)
answer[1] = denom1
elif denom2%denom1 ==0:
answer[0] = numer2 + numer1*(denom2/denom1)
answer[1] = denom2
else:
answer[0] = numer1*denom2 + numer2*denom1
answer[1] = denom1*denom2
return answer
#해답
def solution(numer1, denom1, numer2, denom2):
# 기약분수는 생각하지 않고, 분모1*분모2 를 분모 D로 설정.
N = numer1 * denom2 + numer2 * denom1
D = denom1 * denom2
# 분자 분모 모두 최대공약수로 나눈 값을 리턴
return [N//gcd(N,D), D//gcd(N,D)]
#두 수가 주어지면, 최대공약수를 리턴하는 함수. 유클리드 호제법 적용
def gcd(a,b):
while b:
a,b = b, a % b
return a
|
cs |
'IT, DATA SCIENCE > Python' 카테고리의 다른 글
프로그래머스_파이썬을 파이썬답게_파트1~파트4 (0) | 2023.09.02 |
---|---|
파이썬 _ zip() 함수 (0) | 2023.09.02 |
파이썬 enumerate() 함수 w/ for loop (0) | 2023.09.01 |