๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 10539๋ฒˆ: ์ˆ˜๋นˆ์ด์™€ ์ˆ˜์—ด

by ์ฃผ๋ฐœ2 2020. 5. 20.
๋ฐ˜์‘ํ˜•

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

 

10539๋ฒˆ: ์ˆ˜๋นˆ์ด์™€ ์ˆ˜์—ด

๋ฌธ์ œ ์ˆ˜๋นˆ์ด๋Š” ์‹ฌ์‹ฌํ•ด์„œ ์ˆ˜์—ด์„ ๊ฐ€์ง€๊ณ  ๋†€๊ณ  ์žˆ๋‹ค. ๋จผ์ €, ์ •์ˆ˜ ์ˆ˜์—ด A๋ฅผ ์“ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์•„๋ž˜์— ์ •์ˆ˜ ์ˆ˜์—ด A์˜ ํ•ด๋‹น ํ•ญ๊นŒ์ง€์˜ ํ‰๊ท ๊ฐ’์„ ๊ทธ ํ•ญ์œผ๋กœ ํ•˜๋Š” ์ •์ˆ˜ ์ˆ˜์—ด B๋ฅผ ์“ด๋‹ค.  ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜์—ด A๏ฟฝ๏ฟฝ

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int B = scan.nextInt();
		
		int[] bArr = new int[B];
		int[] aArr = new int[B];
		
		for(int i=0; i<bArr.length; i++) {
			bArr[i] = scan.nextInt();
		}
		
		int sum = 0;	// ์ˆ˜์—ด A์˜ ํ•ฉ
		
		for(int i=0; i<bArr.length; i++) {
			aArr[i] = bArr[i] * (i+1) - sum; 
			sum += aArr[i];
		}
		
		for(int i=0; i<aArr.length; i++) {
			System.out.print(aArr[i] + " ");
		}
		scan.close();
	}

}

ํ’€์ด

์ˆ˜์—ด A์—์„œ ํ•ด๋‹น ํ•ญ๊นŒ์ง€์˜ ํ‰๊ท ๊ฐ’์„ ๊ทธ ํ•ญ์œผ๋กœ ํ•˜๋Š” ์ˆ˜์—ด B๋ฅผ ์“ด๋‹ค.

์ˆ˜์—ด B๊ฐ€ ์ฃผ์–ด์กŒ์„๋•Œ, ์ˆ˜์—ด A๋ฅผ ๊ตฌํ•˜๋Š”๊ฒŒ ๋ฌธ์ œ์ด๋‹ค.

๊ฑฐ์˜ ์ˆ˜ํ•™๋ฌธ์ œ๋กœ ๊ทœ์น™์„ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง€๋Š”๊ฒŒ ์ˆ˜์—ด B์ด๋ฏ€๋กœ, ์ˆ˜์—ด Bํ•ญ์˜ ๊ทœ์น™์€ ์ˆ˜์—ด A์˜ ํ•ด๋‹น ํ•ญ๊นŒ์ง€์˜ ํ‰๊ท ๊ฐ’์ด๋‹ค.

 

Bํ•ญ์˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’์€ Aํ•ญ์˜ ์ฒซ๋ฒˆ์งธ๊ฐ’ / 1

 

Bํ•ญ์˜ ๋‘๋ฒˆ์งธ ๊ฐ’์€ (Aํ•ญ ์ฒซ๋ฒˆ์งธ๊ฐ’ + Aํ•ญ ๋‘๋ฒˆ์งธ๊ฐ’) / 2

 

Bํ•ญ์˜ ์„ธ๋ฒˆ์งธ ๊ฐ’์€ (Aํ•ญ ์ฒซ๋ฒˆ์งธ๊ฐ’ + Aํ•ญ ๋‘๋ฒˆ์งธ๊ฐ’ + Aํ•ญ ์„ธ๋ฒˆ์งธ๊ฐ’) /

 

...

 

์ด๋Ÿฐ์‹์˜ ๊ทœ์น™์ด๋‹ค.

 

์ˆ˜์—ด A์˜ ๊ฐ ํ•ญ์˜ ํ•ฉ์„ sum ๋ผ๋Š” ๊ฐ’์— ์ €์žฅํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

1) bArr[i] = (sum + aArr[i]) / (i+1)

2) sum = sum + aArr[i]

 

1) ์‹์—์„œ aArr[i] ๊ฐ’์„ ๊ตฌํ•ด๋ณด๋ฉด,,

aArr[i] = bArr[i] * (i+1) - sum;

์ด๋ผ๋Š” ์‹์ด ๋‚˜์˜จ๋‹ค.

aArr[i] = bArr[i] * (i+1) - sum; 

 ๊ทธ ํ›„ sum ๊ฐ’์— ๊ตฌํ•ด์ง„ aArr[i] ์ˆ˜์—ด์˜ ํ–‰์„ ๋”ํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€