๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ์ตœ๋Œ€ ๋งค์ถœ ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด JAVA

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ์ตœ๋Œ€ ๋งค์ถœ

์š”์ผ์ด 2021. 5. 13. 02:00
๋ฐ˜์‘ํ˜•

1. ๋ฌธ์ œ

 - ์—ฐ์†๋œ ์ตœ๋Œ€ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ด์ค‘ for๋ฌธ์„ ์“ฐ๋ฉด ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋งŽ์•„์ ธ ์ผ์ผ์ด ๊ณ„์‚ฐํ•˜๊ธฐ์—๋Š” ์†๋„๊ฐ€ ๋Š๋ ธ๋‹ค.

๋ฌธ์ œ

2. ๋‚ด๊ฐ€ ํ‘ผ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

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

public class Main {
	
	public void solution(int n, int k, int[] array) {
		
		int result = 0;
		int resultTmp = 0;
		int startPoint = 0;
		int endPoint = k;
		// ๋งจ ์•ž์˜ k๊ฐœ์˜ ๋งค์ถœ์„ ๋‹ค ๋”ํ•œ๋‹ค.
		while(k > startPoint) {
			resultTmp += array[startPoint];
			startPoint ++;
		}
		
        // result์— ๋‹ด๋Š”๋‹ค.
		if(resultTmp>result) {
			result = resultTmp;
		}
		
		while(endPoint <= n-1) {
			// ์ด๋ฏธ ๋”ํ•ด๋†“์€ ๊ฐ’์—์„œ ๋งจ ์•ž์— ์žˆ๋Š” ๋ฐฐ์—ด๊ฐ’์„ ์ง€์šฐ๊ณ  ์ƒˆ๋กœ์šด ๋‹ค์Œ๊ฐ’์„ ๋”ํ•œ๋‹ค.
			resultTmp = resultTmp - array[endPoint-k] + array[endPoint];
			// ์ตœ๋Œ€ ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ๊ฒฐ๊ณผ ๊ฐ’ ๋ณ€๊ฒฝ
			if(resultTmp>result) {
				result = resultTmp;
			}
			
			endPoint ++;
		}
		
		System.out.println(result);
		
	}

	public static void main(String args[]) {
        Main main = new Main();
		Scanner in= new Scanner(System.in);
        // ์ตœ๋Œ€ ์ผ์ˆ˜
        int day = in.nextInt();
        int k = in.nextInt();
   	 	// ๋งค์ถœ
        int[] array = new int[day];
        for(int i=0; i<day; i++) {
        	array[i] = in.nextInt();
        }
        main.solution(day, k, array);
    }

}

3. for๋ฌธ๊ณผ Math.max๋ฅผ ์‚ฌ์šฉํ•œ ํ•ด๊ฒฐ๋ฐฉ์•ˆ

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

public class Main {
	
	public void solution(int n, int k, int[] array) {
		
		int answer, sum = 0;
		for(int i=0; i<k; i++) {
			sum += array[i];
		}
		
		answer = sum;
		
		for(int i=k; i<n; i++) {
			sum += (array[i]-array[i-k]); 
			answer = Math.max(answer, sum);
		}
		
		System.out.println(answer);
		
	}

	public static void main(String args[]) {
        Main main = new Main();
		Scanner in= new Scanner(System.in);
        int day = in.nextInt();
        int k = in.nextInt();
   	 	int[] array = new int[day];
        for(int i=0; i<day; i++) {
        	array[i] = in.nextInt();
        }
        main.solution(day, k, array);
    }

}
Comments