Tiny Bunny
๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป/Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๋ˆ„์ ํ•ฉ(Prefix Sum) +Java๊ฐ์ฒด ๋ฐฐ์—ด ์„ ์–ธ & ์ƒ์„ฑ

by soonybutter 2024. 10. 28.
728x90

 

 

 
 
 

๋ˆ„์ ํ•ฉ (Prefix Sum)


 
๋ˆ„์ ํ•ฉ์ด๋ž€? 

  • ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ๊ทธ ๋ˆ„์ ๋œ ํ•ฉ์„ ๋ฏธ๋ฆฌ ๊ตฌํ•ด ๋†“๋Š” ๊ฒƒ, '์ „์ฒ˜๋ฆฌ' ๋ผ๊ณ ๋„ ํ•จ.
  • arr๋ฐฐ์—ด์„ ์ผ์ผํžˆ for๋ฌธ์œผ๋กœ ๋Œ๋ฉด์„œ ํ•ฉ์„ ๊ตฌํ•˜๋ฉด ๋˜๋Š”๊ฒƒ ์•„๋‹Œ๊ฐ€๋ž€ ์˜๋ฌธ์„ ๋˜์งˆ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„ ์ธก๋ฉด์—์„œ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ๋‹ค. (ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์—์„œ ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ๋„ ํ•จ..) ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ˆ„์ ํ•ฉ์„ ๋ฏธ๋ฆฌ ๊ตฌํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

 
 
 
๋ˆ„์ ํ•ฉ ๊ตฌํ˜„

  • ํฌ๊ธฐ๊ฐ€ 10์ธ arr ๋ฐฐ์—ด์˜ ๋ˆ„์ ํ•ฉ์„ ๊ตฌํ•ด๋ณด์ž

 
 


 

1.  ๋ˆ„์ ํ•ฉ์œผ๋กœ [a] ~ [b] ์˜ ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ.

 

    "  acc [ b ] - acc [ a - 1 ]  "

 
 
 

2. acc๋ฐฐ์—ด์„ ์ฑ„์šฐ๊ธฐ

์ธ๋ฑ์Šค 0 ์ผ๋•Œ๋Š” arr[0] ๊ทธ ์ž์ฒด๊ฐ€ ๋œ๋‹ค.
๊ทธ ์ดํ›„๋ถ€ํ„ฐ๋Š” acc[i] = acc[i-1] + arr[i]
 
 

" acc[0]=arr[0] "
 
" acc[i] = acc[i-1] + arr[i] "
 

for(int i=0;i<n;i++) {
	if(i==0) {
    acc[i]=arr[i];
	}
    else {
	acc[i]=acc[i-1]+arr[i];
	}
}

 
 
 
 


 
 
์˜ˆ์ œ
 
Q. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ n์ธ ๋ฐฐ์—ด์— n๊ฐœ์˜ ์›์†Œ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ ๋ฐ›๊ณ ,
๋ฌผ์Œ์˜ ํšŸ์ˆ˜ m์„ ์ž…๋ ฅ ๋ฐ›๊ณ , ์ˆœ์„œ์Œ (a,b)๋Š” m๊ฐœ ๋“ค์–ด์˜ฌ๋•Œ,
a~b์˜ ํ•ฉ์„ ๊ตฌํ•˜์‹œ์˜ค.
 
 
 
 
A. 
์ˆœ์„œ์Œ ์ธ๋ฑ์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฐฐ์—ด์•ˆ์—์„œ ํ•ฉ์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.
์ด๋•Œ ๋ˆ„์ ํ•ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

package com.com.practice;

import java.util.Scanner;

class Info{
	int a;
	int b;
	
}

public class Main {
	static Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args) {
	
		int n= sc.nextInt();
		int arr[]=new int[n];
		int acc[]=new int[n];
		
		//arr,acc ์ž…๋ ฅ๋ฐ›๊ธฐ
		for(int i=0;i<n;i++) {
			arr[i]=sc.nextInt();
			if(i==0) {
				acc[i]=arr[i];
			}
			else {
				acc[i]=acc[i-1]+arr[i];
			}
			
			
		}
		int m = sc.nextInt();
		
		//์ˆœ์„œ์Œ a,b ์ž…๋ ฅ๋ฐ›๊ธฐ
		Info[] info = new Info[m];
		for(int i=0;i<m;i++) {
			info[i]=new Info();
			info[i].a=sc.nextInt();
			info[i].b=sc.nextInt();
		}
		
		for(int i=0;i<m;i++) {
			
			if((info[i].a)==0) {
				System.out.println(i+1+"๋ฒˆ์งธ ํ•ฉ: "+ acc[info[i].b]);
			}
			else System.out.println(i+1+"๋ฒˆ์งธ ํ•ฉ: "+ (acc[info[i].b]-acc[info[i].a-1]));
			
			
		}
		
		
		
		return;
	}
	
	

}

 
 
 
 
 
+

๊ฐ์ฒด ๋ฐฐ์—ด์˜ ์„ ์–ธ ๋ฐ ์ƒ์„ฑ ๋ฐฉ๋ฒ•

 
Book ๊ฐ์ฒด 3๊ฐœ๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋จผ์ € ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด,
๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜ b์™€ Book ๊ฐ์ฒด์— ๋Œ€ํ•œ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜ 3๊ฐœ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 
 
   Book[ ] b = new Book[3];
 
์ด๋ ‡๊ฒŒ ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด Book ๊ฐ์ฒด๋ฅผ ๋‹ด์„ ๋ ˆํผ๋Ÿฐ์Šค ๋ณ€์ˆ˜ 3๊ฐœ๊ฐ€ ๋ฐฐ์—ดํ˜•ํƒœ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. 
์ฃผ์˜ํ•  ์ ์€ ์•„์ง Book ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง„๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, Book ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด Book ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 
 
   b[0] = new Book( );
   b[1] = new Book( );
   b[2] = new Book( );
 
 
 
 
 
 
 
 
 
 
์ถœ์ฒ˜: https://kadosholy.tistory.com/90 [KADOSHoly:ํ‹ฐ์Šคํ† ๋ฆฌ]

728x90

TOP

Designed by ํ‹ฐ์Šคํ† ๋ฆฌ