[Java, Kotlin] 백준 11659번 구간 합 구하기 4 with 자바, 코틀린

: ) YOUNG·2022년 6월 3일
2

알고리즘

목록 보기
142/422

백준 11659번
https://www.acmicpc.net/problem/11659

문제



수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오.


생각하기


동작

		list.add(0, 0);
		for(int i=1; i<=N; i++) {
			list.add(list.get(i-1) + Integer.parseInt(st.nextToken()));
		}

각 입력받는 숫자의 누적합을 미리 계산


		for(int i=0; i<M; i++) {
			st = new StringTokenizer(br.readLine());
			int num = Integer.parseInt(st.nextToken());
			int num2 = Integer.parseInt(st.nextToken());

			sb.append(list.get(num2) - list.get(num-1)).append('\n');
		}

각 구간의 합은 list에서 list(num2) - list(num - 1)의 값과 같다



코드



Java

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();

		st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		List<Integer> list = new ArrayList<>();

		st = new StringTokenizer(br.readLine());
		list.add(0, 0);
		for(int i=1; i<=N; i++) {
			list.add(list.get(i-1) + Integer.parseInt(st.nextToken()));
		}
			
		for(int i=0; i<M; i++) {
			st = new StringTokenizer(br.readLine());
			int num = Integer.parseInt(st.nextToken());
			int num2 = Integer.parseInt(st.nextToken());

			sb.append(list.get(num2) - list.get(num-1)).append('\n');
		}

		System.out.println(sb);
	} // End of main
} // End of Main class

Kotlin

import java.util.*
import java.io.*

fun main() {
    val br = BufferedReader( InputStreamReader(System.`in`) )
    var st: StringTokenizer
    var sb = StringBuilder()

    st = StringTokenizer(br.readLine())
    var N = st.nextToken().toInt()
    var M = st.nextToken().toInt()
    var list : MutableList<Int> = ArrayList()
    list.add(0, 0)

    st = StringTokenizer(br.readLine())
    for(i in 1..N) {
        list.add(list.get(i - 1) + Integer.parseInt(st.nextToken()))
    }

    for(i in 0 until M) {
        st = StringTokenizer(br.readLine())
        var num = st.nextToken().toInt()
        var num2 = st.nextToken().toInt()

        sb.append(list.get(num2) - list.get(num - 1)).append('\n')
    }

    print(sb)
} // End of main

0개의 댓글