목록전체 글 (601)
sm 기술 블로그
import sys input = sys.stdin.readline N,K = map(int,input().split()) num = list(map(int,input().split())) sum = 0 numSum = [0] numArr = [] for val in num: sum += val numSum.append(sum) for i in range(K, N+1): numArr.append(numSum[i] - numSum[i-K]) print(max(numArr)) 문제요약 측정한 온도 전체 날짜는 N이다. K는 합을 구하기 위한 연속적 날짜 수이다. 날짜 N 의 연속적인 날짜 K의 합은 얼마인가? 설명 누적합을 쓰면 매우 빠르게 문제를 풀 수 있다. 맨위는 입력받은 값이고 그 입력받은 값을 기준..
import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); String[] tmp1 = br.readLine().split(" "); int sum = 0; int N = Integer.parseInt(tmp1[0]); int M = Integer.parseInt(tmp1[1]); int[] numSum = new int[N + 1]; String[] tmp2 = b..
import sys input = sys.stdin.readline result = "" N,M = map(int,input().split()) num = list(map(int,input().split())) sum = 0 sum_arr = [0] for i in num : sum += i sum_arr.append(sum) for _ in range(M): sum = 0 i,j = map(int,input().split()) result += str(sum_arr[j] - sum_arr[i-1]) + "\n" print(result) 문제요약 구간의 부분합을 구하자 설명 정말 간단하게 생각하면 시간초과로 틀린다. (내가 그랬다 ㅎㅎ) 생각을 다르게하여 처음부터 누적합을 구하고 끝값에서 시작값-1 빼주..
import java.util.*; import java.io.*; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] tmp1 = br.readLine().split(" "); int N = Integer.parseInt(tmp1[0]); int K = Integer.parseInt(tmp1[1]); int[][] DP = new int[N + 1][K + 1]; for (int i = 1; i