[Algorithm] ๐Ÿ•น๏ธ๋ฐฑ์ค€ 2847 ๊ฒŒ์ž„์„ ๋งŒ๋“  ๋™์ค€์ด

HaJingJingยท2021๋…„ 8์›” 27์ผ
0

Algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
102/119

0. ๋ฌธ์ œ

ํ•™๊ต์—์„œ ๊ทธ๋ž˜ํ”ฝ์Šค ์ˆ˜์—…์„ ๋“ค์€ ๋™์ค€์ด๋Š” ์ˆ˜์—…์‹œ๊ฐ„์— ๋“ค์€ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์Šค๋งˆํŠธํฐ ๊ฒŒ์ž„์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ฒŒ์ž„์—๋Š” ์ด N๊ฐœ์˜ ๋ ˆ๋ฒจ์ด ์žˆ๊ณ , ๊ฐ ๋ ˆ๋ฒจ์„ ํด๋ฆฌ์–ดํ•  ๋•Œ ๋งˆ๋‹ค ์ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ํ”Œ๋ ˆ์ด์–ด์˜ ์ ์ˆ˜๋Š” ๋ ˆ๋ฒจ์„ ํด๋ฆฌ์–ดํ•˜๋ฉด์„œ ์–ป์€ ์ ์ˆ˜์˜ ํ•ฉ์œผ๋กœ, ์ด ์ ์ˆ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์˜จ๋ผ์ธ ์ˆœ์œ„๋ฅผ ๋งค๊ธด๋‹ค. ๋™์ค€์ด๋Š” ๋ ˆ๋ฒจ์„ ๋‚œ์ด๋„ ์ˆœ์œผ๋กœ ๋ฐฐ์น˜ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์‹ค์ˆ˜๋กœ ์‰ฌ์šด ๋ ˆ๋ฒจ์ด ์–ด๋ ค์šด ๋ ˆ๋ฒจ๋ณด๋‹ค ์ ์ˆ˜๋ฅผ ๋งŽ์ด ๋ฐ›๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋™์ค€์ด๋Š” ํŠน์ • ๋ ˆ๋ฒจ์˜ ์ ์ˆ˜๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒํ•ด์„œ ๊ฐ ๋ ˆ๋ฒจ์„ ํด๋ฆฌ์–ดํ•  ๋•Œ ์ฃผ๋Š” ์ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

๊ฐ ๋ ˆ๋ฒจ์„ ํด๋ฆฌ์–ดํ•  ๋•Œ ์–ป๋Š” ์ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ช‡ ๋ฒˆ ๊ฐ์†Œ์‹œํ‚ค๋ฉด ๋˜๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์ ์ˆ˜๋Š” ํ•ญ์ƒ ์–‘์ˆ˜์ด์–ด์•ผ ํ•˜๊ณ , 1๋งŒํผ ๊ฐ์†Œ์‹œํ‚ค๋Š” ๊ฒƒ์ด 1๋ฒˆ์ด๋‹ค. ํ•ญ์ƒ ๋‹ต์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋งŒ ์ฃผ์–ด์ง„๋‹ค. ์ •๋‹ต์ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€์ธ ๊ฒฝ์šฐ์—๋Š” ์ ์ˆ˜๋ฅผ ๋‚ด๋ฆฌ๋Š” ๊ฒƒ์„ ์ตœ์†Œํ•œ์œผ๋กœ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— ๋ ˆ๋ฒจ์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 100) ๋‹ค์Œ N๊ฐœ ์ค„์—๋Š” ๊ฐ ๋ ˆ๋ฒจ์„ ํด๋ฆฌ์–ดํ•˜๋ฉด ์–ป๋Š” ์ ์ˆ˜๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋ ˆ๋ฒจ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ ์ˆ˜๋Š” 20,000๋ณด๋‹ค ์ž‘์€ ์–‘์˜ ์ •์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ
์ฒซ์งธ ์ค„์— ์ ์ˆ˜๋ฅผ ๋ช‡ ๋ฒˆ ๊ฐ์†Œ์‹œํ‚ค๋ฉด ๋˜๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

1. ์•„์ด๋””์–ด

๐Ÿ’ก ๋’ค์—์„œ ๋ถ€ํ„ฐ ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์•ž์— ์š”์†Œ๊ฐ€ ๋’ค์— ์š”์†Œ๋ณด๋‹ค -1๋˜๋„๋ก ์ˆ˜์ •ํ•จ

2. ํ•ต์‹ฌ ํ’€์ด

  1. ๋’ค์—์„œ ๋ถ€ํ„ฐ ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์•ž์— ์š”์†Œ๊ฐ€ ๋’ค์— ์š”์†Œ๋ณด๋‹ค -1๋˜๋„๋ก ์ˆ˜์ •ํ•จ
for(int i=n-1; i>=1; i--) {
	if(arr[i-1] >= arr[i]) {
		sum += arr[i-1]-arr[i]+1;
		arr[i-1] = arr[i]-1;
	}
}

3. ์ฝ”๋“œ

import java.io.*;

public class BOJ_2847 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int n = Integer.parseInt(br.readLine());
		
		int[] arr = new int[n];
		
		for(int i=0; i<n; i++) {
			arr[i] = Integer.parseInt(br.readLine());
		}
		
		int sum = 0;
		for(int i=n-1; i>=1; i--) {
			if(arr[i-1] >= arr[i]) {
				sum += arr[i-1]-arr[i]+1;
				arr[i-1] = arr[i]-1;
			}
		}
		
		System.out.println(sum);
	}

}

4. ๊ฒฐ๊ณผ

์„ฑ๊ณตโœจ

profile
๐ŸŒฑ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๐ŸŒฑ

0๊ฐœ์˜ ๋Œ“๊ธ€