Dev_from the Bottom

#8. Algorithm04_python) -(1/2)+(2/3)-(3/4)+(4/5)-(5/6)+(6/7) ... -(99/100)의 합계 구하기 본문

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을 받는 형태가 더 자연스러울 텐데. -> 추후 수정!

Comments