# 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의 시작 값 또한 변수가 되도록 만들어야했다.
'프로그래밍 > Python' 카테고리의 다른 글
파이썬 input expected at most 1 argument, got 2 오류 (0) | 2023.04.18 |
---|---|
파이썬 list[] - 리스트 (0) | 2023.04.18 |
개수가 5개 이하인 과일은 과일의 개수가 5가 되도록 과일을 구매한다. 이때 소비해야 하는 돈은? (0) | 2023.04.13 |
막대의 길이, 색상의 변화 횟수 (0) | 2023.04.06 |
369 게임 (0) | 2023.04.06 |