본문 바로가기

Python/Practice

Q. 1+(-2)+3+(-4)+... 과 같은 식으로 계속 더해나갔을 때, 몇까지 더해야 총합이 100이상이 되는지 구하시오.

방법01. 

x = 1
sum = 0

while True:

    if x % 2 == 1:
        sum = sum + x
    else:
        sum = sum - x

    if sum >= 100:
        print(x)        # break가 print위로가면 출력 X. print전에 탈출하겠다는거잖아
        break


    x = x + 1

 

방법02.

x = 1
sum = 0
while sum < 100:
    sum = sum + x
    x = x + 1                -------> 이런식이면 마지막 x에 +1되고나서 출력되니까

x = 1
sum = 0
while sum < 100:
    x = x + 1                -------> 순서를 바꾸면되는데, 2부터 시작하게되니까 x = 0으로 변경하면되겠지
    sum = sum + x

 

방법03. 스위칭변수 이용

x = 0
sum = 0
i = -1      # 스위칭변수   이해다시해보자!!!!!!!!!!!!!!!

while sum < 100:
    i = i * -1
    x = x + 1  

    sum = sum + (x * i)

print(x)


# i -- 1 -1  1 -1  1
# x -- 1  2  3  4  5
# s -- 1 -2 +3 -4  +5

# x가 3인 시점에서 sum이 3이되면서 whlile이 false가 되니까 탈출하게 됨
# 그럼 그 시점의 x를 print하겠다는 거잖아?

 

 

========== 연습 다시 ===========

# 연습 01 - 방법1
print("---------연습 01 - 방법1----------")

x = 1
sum = 0

while True:

    if x % 2 == 1:          # 아 sum에다가 X를 더해라, 빼라 라고 생각하니까 좀 쉽네
        sum = sum + x
    else:
        sum = sum - x

    if sum >= 100:
        print(x)
        break
    x = x + 1




# 연습 02 - 방법1
print("---------연습 02 - 방법1----------")


x = 1
sum = 0

while True:
    if x % 2 == 0:
        sum = sum - x
    else:
        sum = sum + x
    
    if sum >= 100:
        print(x)
        break

    x = x + 1



# 연습 03 - 방법2
print("---------연습 03 - 방법2----------")


x = 0
sum = 0
i = -1


while True:

    i = i * -1
    x = x + 1
    sum = sum + (x * i)
    
    if sum >= 100:          # 사실은 while True로 루프를 만드는게아니라, sum < 100 등의 조건을 거는게 짧긴하겠다!
        print(x)
        break