백준 Silver3 11659 - 구간 합 구하기 4

JH·2022년 10월 1일
0

백준 알고리즘

목록 보기
16/29
post-thumbnail

문제

입력

출력

예제

idea

처음에는 이중for문으로 작성을 하려고 했지만 시간제한이 있어서 이거는 기각.
그래서 생각한 것이 수를 입력을 받을 때 마다 누적된 합을 배열에 저장한다
그 후에 입력받은 구간의 합을 구하기 위해 y까지의 누적된 합을 x까지의 누적된 합으로 뺀 결과를 출력한다.

정리

  • f(n)에 0~n까지의 합 저장
  • x~y범위가 나올 경우 f(y) - f(x) 계산 후 출력

Code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
		
	   public static void main(String[] args) throws IOException {
		   
	        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));       
	        StringTokenizer st = new StringTokenizer(br.readLine());
	      
	       int N =Integer.parseInt(st.nextToken());
	       int num = Integer.parseInt(st.nextToken());
	       int number[] =new int[N+1];
	       int x[] = new int[N+1];
	       int y[] = new int[N+1];
	       st = new StringTokenizer(br.readLine());
	         
	       for(int i=1;i<=N;i++) 
	          number[i]=Integer.parseInt(st.nextToken());
	       
	       for(int i=1;i<=num;i++) {
	          st = new StringTokenizer(br.readLine());
	          x[i]=Integer.parseInt(st.nextToken());
	          y[i]=Integer.parseInt(st.nextToken());
	       }
	       int sum[] =new int[N+1];
	       for(int i=1;i<=N;i++) {
	          sum[0]=number[0];
	          sum[i]=sum[i-1]+number[i];   
	       }       
	       for(int i=1;i<=num;i++)                  
	             System.out.println(sum[y[i]]-sum[x[i]-1]);	       
	   }
}

결과

0개의 댓글