본문 바로가기

Python/Practice

Q. 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오

방법01. 눈에 보이는 그대로

x = 1
sum = 0

while x <= 10:
   
    y = 1
    while x >= y:
        sum = sum + y        # sum = 0을 중간에 넣어야한다고 생각했는데 왜 이게 결과가 뜨냐? 다시이해하기
        y = y + 1

    x = x + 1

print(sum)

 

 

방법02. 변수의 적절한 활용 (01보다 좋은 코드)

x = 1
tempSum = 0     # 임시의 sum 이라는 뜻
sum = 0

while x <= 10:
    tempSum = tempSum + x        # tempSum -> 1, 1+2, 1+2+3...
    sum = sum + tempSum
    x = x + 1

print(sum)

 

 

방법03. 문제의 재구성

x = 1
sum = 0

while x <= 10:
    sum = sum + (x * (11 - x))
    x = x + 1
print(sum)

 

 

========== 연습 ===========

# 연습01.    1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오.

print("-------연습01-------")

x = 1
sum = 0
sumReal = 0

while x <= 10:
    sum = sum + x
    x = x + 1 

print(sum)          ## 이게 1~10까지의 합



print("-------연습02-------")

x = 1
sum = 0
sumReal = 0

while x <= 10:
    sum = sum + x
    sumReal = sumReal + sum      ## sum이 1, 3, 6, 10....이렇게 올라가니까 이것들을 순차적으로 더해주는거지
    x = x + 1

print(sumReal)





print("-------연습03 - 정석대로?-------") 

# 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+...+10)의 결과를 계산하시오.
 
x = 1
sum = 0

while x <= 2:
    
    y = 1
    while y <= x:
        y = y + 1
        sum = sum + x + y
        print(sum)

    x = x + 1

    # x 1 2 2
    # y 2 2 3
    # s 3 7 12 --------> 이런식인거지?


print("-------연습03-2-------") 

x = 1
sum = 0

while x <= 10:

    y = 1
    while y <= x:
        sum = sum + y       # 1, 1+(1+2), 1+(1+2)+(1+2+3).... -> y는 x보다 작을동안 +1씩하면서 누적된다
        y = y + 1

    x = x + 1

print(sum)




print("-------연습03-3-------")


x = 1
sum = 0

while x <= 10:

    y = 1
    while y <= x:
        sum = sum + y
        y = y + 1

    x = x + 1

print(sum)