-
06.27(8). 밤을 지내면서 // 쳇gpt 이용 설명 들어가면서 훈련TIL( Today I Learned) 2023. 6. 28. 03:16
오랜만에 다시 코드 공부라 ^^ 유클리드 호제법(알고리즘) 과 최대공약수 아는 줄 알았는데 .. ㅠㅠ
그래도 하나하나 따져가면서 하니 재미있네요
아래는 지난 일요일 스터디 중 기약분수 코딩을 다시 복습겸 완벽한 이해를 위해 다시 풀었습니다.
def solution(numer1, denom1, numer2, denom2):
answer = []
numer3 = numer1 * denom2 + numer2 * denom1
denom3 = denom1 * denom2
for i in range(denom3, 0, -1):
if numer3 % i == 0 and denom3 % i == 0:
gcd = i
break
reduced_numerator = numer3 // gcd
reduced_denominator = denom3 // gcd
answer = reduced_numerator, reduced_denominator
return answer
주어진 코드는 분수를 더하는 기능을 수행하는 solution 함수입니다.
함수는 numer1, denom1, numer2, denom2라는 네 개의 매개변수를 받습니다. 각각은 더할 분수의 분자와 분모를 나타냅니다.
아래에서 한 단계씩 코드를 설명해 드리겠습니다:
- numer3 = numer1 * denom2 + numer2 * denom1: numer1과 numer2를 각각 denom2와 denom1과 곱한 후, 두 결과를 더해서 numer3 변수에 저장합니다. 이는 분수를 더하는 연산을 수행하는 과정으로, 분자를 계산합니다.
- denom3 = denom1 * denom2: denom1과 denom2를 곱해서 denom3 변수에 저장합니다. 이는 분모를 계산합니다.
- for i in range(denom3, 0, -1): denom3부터 1까지 역순으로 범위를 순회하는 for 루프를 설정합니다.
- if numer3 % i == 0 and denom3 % i == 0: 현재 숫자 i가 numer3와 denom3 모두로 나누어 떨어지는지 확인합니다. 즉, i가 numer3와 denom3의 공약수인지를 판단합니다.
- gcd = i: 공약수가 발견되면, 해당 값을 gcd 변수에 할당합니다. 루프는 큰 값부터 작은 값까지 반복되므로, 처음 발견된 공약수가 최대공약수(GCD)가 됩니다.
- break: GCD가 찾아지면 break 문이 실행되어 루프가 종료됩니다. 최대공약수를 찾았기 때문에 남은 숫자들에 대한 순회는 불필요합니다.
- reduced_numerator = numer3 // gcd와 reduced_denominator = denom3 // gcd: numer3와 denom3를 GCD로 나누어 간소화된 분자와 분모를 계산합니다.
- answer = reduced_numerator, reduced_denominator: reduced_numerator와 reduced_denominator를 튜플로 묶어서 answer 변수에 할당합니다.
- return answer: answer 변수를 반환합니다. 이 변수는 간소화된 기약분수 형태로 분자와 분모가 저장된 튜플입니다.
'TIL( Today I Learned)' 카테고리의 다른 글
2023.6.30 금요일 (0) 2023.06.30 2023.6.29.목요일 (0) 2023.06.29 6.28.수요일 list, append, for 를 이용한 코딩 연습 (0) 2023.06.28 2023.06.26 (0) 2023.06.26 2023/6/25 (0) 2023.06.25