본문 바로가기

Kotlin/Kotlin Algorithm

[백준] 11659. 구간 합 구하기4 ( Kotlin, Java )

728x90
반응형

 

 

구간 합 구하기

 

https://www.acmicpc.net/problem/11659

 

11659번: 구간 합 구하기 4

첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j

www.acmicpc.net

 

 

 

 

 

 

 

 

문제

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

자바

 

 

 

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 {
    
        // (1). 개수를 입력받기 위해 생성
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());

        // (2). 숫자 개수, 문제의 개수 변수를 생성하여 저장
        int num = Integer.parseInt(stringTokenizer.nextToken());
        int quNum = Integer.parseInt(stringTokenizer.nextToken());

        // (3). 구간 합 배열 생성
        long[] S = new long[num +1];
        // stringTokenizer 를 초기화 해주어야 함 -> 안해주면 런타임 에러(NoSuchElement) 발생
        stringTokenizer = new StringTokenizer(bufferedReader.readLine());

        // (4). 숫자 개수만큼 반복 ( 구간 합 공식 : S[i] = S[i-1] + A[i]
        for (int  i = 1; i <= num; i++) {
            S[i] = S[i-1] + Integer.parseInt(stringTokenizer.nextToken());
        }

        // (5). 문제의 개수만큼 반복
        for (int q = 0; q < quNum; q++) {
            stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            int i =  Integer.parseInt(stringTokenizer.nextToken());
            int j =  Integer.parseInt(stringTokenizer.nextToken());
            System.out.println(S[j] - S[i-1]);
        }
    }
}

 

 

 

 

 

 

 

 

 

 

코틀린

 

 

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

fun main() {

    // (1)
    val bufferedReader = BufferedReader(InputStreamReader(System.`in`))
    var stringTokenizer = StringTokenizer(bufferedReader.readLine(), " ")

    // (2)
    val num = stringTokenizer.nextToken().toInt()
    val quNum = stringTokenizer.nextToken().toInt()

    // (3)
    val S = LongArray(num+1)
    stringTokenizer = StringTokenizer(bufferedReader.readLine(), " ")

    // (4)
    for (i in 1 .. num) {
        S[i] = S[i-1] + stringTokenizer.nextToken().toInt()
    }

    // (5)
    for (q in 0 until  quNum) {
        stringTokenizer = StringTokenizer(bufferedReader.readLine(), " ")
        val i = stringTokenizer.nextToken().toInt()
        val j = stringTokenizer.nextToken().toInt()
        println(S[j] - S[i-1])
    }
}
728x90
반응형