[백준] 11659번: 구간 합 구하기 4

앙이🐯·2022년 6월 7일
0

알고리즘

목록 보기
18/22

백준 11659번: 구간 합 구하기 4

1. 문제 설명

2. 문제 풀이

//누적 합 구하기
arr[i]=arr[i-1]+Integer.parseInt(st.nextToken());

//일정 구간 합
//end, start사이의 합
arr[end]-arr[start-1]
  • Scanner: 편리하지만 속도가 느림
  • BufferedReader: 입력 속도가 빠름
  1. Sccaner는 버퍼 크기가 1024 chars, BufferedReader의 버퍼 크기는 8192 chars
  2. Scanner는 문자열을 구분해 분석하는 파싱이 가능하고 BufferedReader는 파싱기능이 제공되지 않아 읽기만 가능
  3. BufferedReader는 입력 시 바로 동기화가 되지만 Scanner는 동기화가 되지 않음
  4. BufferedReader는 즉시 IOException을 던지지만 Scanner는 숨김
1. Scanner 사용
import java.io.*;
import java.util.*;

public class No_11659 {

	public static void main(String[] args) throws IOException{
		Scanner sc= new Scanner(System.in);
		
		int N=sc.nextInt();
		int M=sc.nextInt();
		
	
		int [] arr= new int[N+1];
		
		for(int i=1;i<=N;i++) {
			arr[i]=arr[i-1]+sc.nextInt();
		}

		
		for(int i=0;i<M;i++) {
			
			int start=sc.nextInt();
			int end=sc.nextInt();
			
			
			System.out.println(arr[end]-arr[start-1]);
		}
	}

}

  • 실행결과
2. BufferedReader 사용
import java.io.*;
import java.util.*;

public class No_11659 {

	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 M=Integer.parseInt(st.nextToken());
		
		st=new StringTokenizer(br.readLine());
		int [] arr= new int[N+1];
		
		for(int i=1;i<=N;i++) {
			arr[i]=arr[i-1]+Integer.parseInt(st.nextToken());
		}

		
		for(int i=0;i<M;i++) {
			st=new StringTokenizer(br.readLine());
			int start=Integer.parseInt(st.nextToken());
			int end=Integer.parseInt(st.nextToken());
			
			
			System.out.println(arr[end]-arr[start-1]);
		}
	}

}
  • 실행결과

0개의 댓글