Algorithm_study
#8. Algorithm04_python) -(1/2)+(2/3)-(3/4)+(4/5)-(5/6)+(6/7) ... -(99/100)의 합계 구하기
고무라면
2022. 5. 9. 21:03
문제)
-(1/2)+(2/3)-(3/4)+(4/5)-(5/6)+(6/7) ... -(99/100)
step1) 로직 생성 및 정답 출력
# 로직 구현 및 정답 출력
answer = 0
for i in range(1, 100):
a = i / (i + 1)
if i % 2 != 0: # 홀짝 항 구분
answer -= a # 홀수 항일 때 (-)
else:
answer += a # 짝수 항일 때 (+)
print(f'정답 : {answer: .6f}') # 소수점 6째자리
>>>
정답 : -0.688172
step2) 메서드화
# 메서드화
def algorithm_04():
answer = 0
for i in range(1, 100):
a = i / (i + 1)
if i % 2 != 0:
answer -= a
else:
answer += a
answer = round(answer, 6)
return answer
print(f'정답 : {algorithm_04()}')
>>>
정답 : -0.688172
step3) 확장 : 숫자 입력받아서
# 확장 : 자연수 n 입력받아서 연산
def algorithm_04_extend():
n = int(input("자연수 n 입력 : "))
answer = 0
for i in range(1, n):
a = i / (i + 1)
if i % 2 != 0:
answer -= a
else:
answer += a
answer = round(answer, 6)
return answer
print(f'-(1/2)+(2/3)-(3/4)+(4/5)-(5/6)+(6/7) ... -(n-1/n) 정답 : {algorithm_04_extend()}')
>>>
자연수 n 입력 : 100
-(1/2)+(2/3)-(3/4)+(4/5)-(5/6)+(6/7) ... -(n-1/n) 정답 : -0.688172
# 배운점
- 소수점 처리 : round 메서드
# 소회
- 어랏? 메서드 형태가 좀 이상해 보임
- 파라미터로 n을 받는 형태가 더 자연스러울 텐데. -> 추후 수정!