728x90
반응형
2559번: 수열
첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기
www.acmicpc.net
솔루션
이 문제는 이중포문을 쓰면 안된다. 그럼 어떻게 구현을 하는가? 포문을 한번만쓰고 구현하면된다. 다른 좋은 방식이 있을 수도 있다. 저자의 방식을 소개하겠다. 예제 1번은 K = 2일때 두개를 거치고 result 배열에 저장하고 i = 3이면 0 + 1 + 2로 되니 0을 빼줘야한다. 이걸 식으로 나타내면 i - K 번째 수를 빼주면 0이 제외되고 1+2의 값이 result 배열에 들어갈것이다. 글로만 설명하면 이해하기 어려울 수 있으니 그림으로 설명을 한번 더 해보겠다.
result = []
K = 2
list = [3,1,2,4]
sum = 0
// for i가 0일때
sum += list[0]
// for i 가 1일때
sum += list[0] + list[1] -> result에 저장
// for i 가 2일때
sum += list[0] + list[1] + list[2] -> list[0]을 제외하고 result에 저장
sum += list[i] - list[i-K] -> 이렇게 되면 list[0]을 제외하게된다.
Code
n, k = map(int , input().split())
temp_list = list(map(int, input().split()))
sum_list = []
sum_ = 0
for i in range(len(temp_list)):
sum_ += temp_list[i]
if(i == k-1):
sum_list.append(sum_)
if(i >= k):
sum_ -= temp_list[i-k]
sum_list.append(sum_)
print(max(sum_list))
728x90
반응형
'알고리즘' 카테고리의 다른 글
[Softeer level1] Python 근무 시간 (0) | 2023.08.07 |
---|---|
[Softeer level1] Python 주행거리 비교하기 (0) | 2023.08.07 |
[프로그래머스 level1 Python] 덧칠하기 (0) | 2023.07.09 |
[프로그래머스 - 코딩기초 트레이닝 C++] 문자열 뒤집기 (0) | 2023.07.03 |
[프로그래머스 - 코딩기초 트레이닝 C++] 접두사인지 확인하기 (0) | 2023.07.02 |