백준 11659

hong030·2023년 2월 16일
0

*solved.ac 기준 실버5단계 문제

풀이)
여러 개의 숫자가 주어지고 그 숫자 구간의 합을 구할 때 계산을 빠르게 하기 위해 구간의 합을 저장하는 배열 sum을 만들어 계산한다.

주어진 숫자 중 1, 2, 3번째 숫자의 합을 구하려면 sum[3]-sum[0] 을 하면 된다.

내 코드)

//Scanner  사용
import java.util.Scanner;
public class Backjoon11659{
	public static void main(String[]args) {
		
		Scanner s = new Scanner(System.in);
		int D = s.nextInt();
		int T = s.nextInt();
		
		int sum[] = new int[D+1];
		sum[0] = 0;
		for(int i=1;i<D+1;i++) {
			sum[i] = sum[i-1] + s.nextInt();
		}
		
		for(int i=0;i<T;i++) {
			int fir = s.nextInt();
			int last = s.nextInt();
			System.out.println(sum[last]-sum[fir-1]);
		}
	}
}

내 코드 2)

import java.io.*;
import java.util.StringTokenizer;
public class Backjoon11659{
	public static void main(String[]args)throws IOException {
		
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(bf.readLine());
		int D = Integer.parseInt(st.nextToken());
		int T = Integer.parseInt(st.nextToken());
		
		int sum[] = new int[D+1];
		sum[0] = 0;
		st = new StringTokenizer(bf.readLine());
		for(int i=1;i<D+1;i++) {
			sum[i] = sum[i-1] + Integer.parseInt(st.nextToken());
		}
		
		for(int i=0;i<T;i++) {
			st = new StringTokenizer(bf.readLine());
			int fir = Integer.parseInt(st.nextToken());
			int last = Integer.parseInt(st.nextToken());
			System.out.println(sum[last]-sum[fir-1]);
		}
	}
}

scanner과 buffer의 차이가 유의미하다.

profile
자바 주력, 프론트 공부 중인 초보 개발자. / https://github.com/hongjaewonP

0개의 댓글