본문 바로가기
  • 부자가 될 남자
프로그래밍/Python

부분합의 최댓값을 구하자. feat.python

by ㅍ우주 2023. 4. 13.
# 2.  숫자 n 을 입력하면 n개의 숫자를 입력할 수 있다.
#   그 중 최대 부분합을 구하는 프로그램을 작성.
# ex)  
# 입력  8    
# 입력  [-1, 5, 7, -9, 8, 1, -1, 2]
# 출력  13

num_cnt = int(input("숫자 n을 입력하시오 : ")) #3
storage_1 = []
for i in range(num_cnt):
    storage_1.append(int(input("리스트에 저장될 숫자를 입력하시오 : ")))

max = 0

for i in range(num_cnt): # 1,2,3, ... ,8
    storage_2=0
    for j in range(i,num_cnt): # j = 0,1
        storage_2 += storage_1[j] #storage_2 = -1 ->
        if storage_2>max:
            max = storage_2
   
print(max)

# 나는 다음과 같은 실수를 했었다.

  - for문에서 range의 범위를 (num_cnt+1)과 같이 작성하였는데, num_cnt에 +1을 해준 이유가 

    초기 시작값. 즉, 0<=i<num_cnt이 1<=i<=num_cnt로 될 것이라 생각했으나, 이는 0<=i<=num_cnt이며, 
    사실 굳이 필요없는 수정이였다.

 

  - 반복문의 시작 값을 지정해주지 않아 j가 무조건 0부터 시작되었었는데, 부분합이란, 첫번째 항부터 n번째 항까지의 합      이 아닌, j번째 항부터 n번째 항(j<=n)까지의 합을 계산하는 것이기에, j의 시작 값 또한 변수가 되도록 만들어야했다.