Problem
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
Solving
1. 이중 For문을 이용하여 범위 내의 수를 모두 더하여 비교
2. 슬라이싱과 sum()함수를 이용하여 범위 내의 수를 더하여 비교
Code
방법 1
T = int(input())
for test_case in range(1, T + 1):
N, M = map(int, input().split())
arr = list(map(int, input().split()))
result = [0] * (N-M+1)
# 구간 설정하여 더하기 idx ~ idx+M
for idx in range(N-M+1):
for plus in range(idx, idx+M):
result[idx] += arr[plus]
# 최대 최소 구하기
max = 0
min = 10000*100+1
for num in result:
if num > max:
max = num
if num < min:
min = num
print(f'#{test_case} {max-min}')
방법 2
for test_case in range(1, int(input())+1):
N, M = map(int, input().split())
arr = list(map(int, input().split()))
max = 0
min = 10000*100+1
for i in range(N-M+1):
tmp = sum(arr[i:i+M])
if tmp > max: # 최대
max = tmp
if tmp < min: # 최소
min = tmp
print(f'#{test_case} {(max - min)}')
오류가 잘 나는 곳
M의 크기만큼 인덱싱하여 더해줘야하므로, 반복문을 돌릴 때 반복문 범위를 0 ~ N-M까지인 것을 주의하자!
<틀리거나 잘못된 부분을 댓글로 알려주세요!>
반응형
'Algorithm > SW Expert Academy Review' 카테고리의 다른 글
4831. [파이썬 S/W 문제해결 기본] 1일차 - 전기버스 (0) | 2023.03.05 |
---|---|
16180. 4834. [파이썬 S/W 문제해결 기본] 1일차 - 숫자 카드 (0) | 2023.03.05 |
1206. [S/W 문제해결 기본] 1일차 - View (0) | 2023.03.05 |
16504. Gravity (0) | 2023.03.05 |
LIST1. 1일차 - min max (0) | 2023.02.12 |