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

[๋ฐฑ์ค€] 2262๋ฒˆ: ํ† ๋„ˆ๋จผํŠธ ๋งŒ๋“ค๊ธฐ(๊ทธ๋ฆฌ๋””)

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

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

 

2262๋ฒˆ: ํ† ๋„ˆ๋จผํŠธ ๋งŒ๋“ค๊ธฐ

์›”๋“œ์‹œ์—์„œ๋Š” ๋งค๋…„ n๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด ๋ชจ์—ฌ ์›”๋“œ ํฌ๋ž˜ํ”„ํŠธ๋ผ๋Š” ๊ฒŒ์ž„์˜ ํ† ๋„ˆ๋จผํŠธ ๋Œ€ํšŒ๋ฅผ ์น˜๋ฅธ๋‹ค. ์ด ๊ฒŒ์ž„์€ ํŠน์„ฑ์ƒ ์‹ค๋ ฅ๋งŒ์ด ์ŠนํŒจ๋ฅผ ์ขŒ์šฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์•„๋ฌด๋ฆฌ ์‹ค๋ ฅ์ด ์—‡๋น„์Šทํ•œ ์‚ฌ๋žŒ์ด ์‹œํ•ฉ์„ ์น˜๋Ÿฌ๋„ ๋žญํ‚น์ด ๋†’์€ ์‚ฌ๋žŒ์ด ๋ฐ˜๋“œ์‹œ ์ด๊ธฐ๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์›”๋“œ์‹œ์—์„œ๋Š” ๊ฒŒ์ž„์„ ํฅ๋ฏธ์ง„์ง„ํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ, ๋ถ€์ „์Šน์„ ์—ฌ๋Ÿฌ ๋ฒˆ ๋งŒ๋“ค๋”๋ผ๋„ ๊ฐ ์‹œํ•ฉ์— ์ž„ํ•˜๋Š” ์„ ์ˆ˜๋“ค์˜ ๋žญํ‚น ์ฐจ์ด๋ฅผ ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค. ํ† ๋„ˆ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ์—๋Š” ์ด๋ฏธ ์ถ”์ฒจ์ด ๋œ ์ˆœ์„œ๋Œ€๋กœ ์„ ์ˆ˜๋“ค์„ ๋ฐฐ์น˜ํ•˜๊ณ , ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ

www.acmicpc.net

์ฝ”๋“œ

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		//int[] arr = new int[n];
		List<Integer> list = new ArrayList<Integer>();
		int min = 0;
		
		for(int i=0; i<n; i++) 
			list.add(scan.nextInt());
			
		int max = n;	// ๊ฐ€์žฅ ๋žญํ‚น์ด ๋‚ฎ์€(์ˆซ์ž๊ฐ€ ๋†’์€) ์„ ์ˆ˜ 
		for(int i=0; i<n-1; i++) {
			int idx = list.indexOf(max);	// ๋žญํ‚น์ด ๋‚ฎ์€ ์„ ์ˆ˜์˜ ์ธ๋ฑ์Šค
			
			// ๋žญํ‚น์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์„ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์•ž์— ์žˆ์„๊ฒฝ์šฐ => ๊ทธ ๋’ค ์„ ์ˆ˜์™€์˜ ์ฐจ์ด
			if(idx == 0)
				min += list.get(idx) - list.get(idx + 1);
			// ๋žญํ‚น์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์„ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ๋์— ์žˆ์„๊ฒฝ์šฐ => ๊ทธ ์•ž ์„ ์ˆ˜์™€์˜ ์ฐจ์ด
			else if(idx == list.size()-1) 
				min += list.get(idx) - list.get(idx -1);
			
			// ๋žญํ‚น์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์„ ์ˆ˜๊ฐ€ ์ค‘์•™ ์–ด๋”˜๊ฐ€์— ์žˆ์„๊ฒฝ์šฐ => ์•ž, ๋’ค ์„ ์ˆ˜์ค‘ ์ฐจ์ด๊ฐ€ ์ž‘์€ ์„ ์ˆ˜์™€ ๋งค์นญ
			else
				min += Math.min(list.get(idx) - list.get(idx-1), list.get(idx) - list.get(idx+1));
			
			list.remove(idx);	// ๋žญํ‚น์ด ๊ฐ€์žฅ ๋†’์€ ์„ ์ˆ˜๋Š” ๋งค์นญ์ด ๋๋‚ฌ์œผ๋ฏ€๋กœ ์ œ๊ฑฐ,
			max --;
		}
		
		System.out.println(min);
		scan.close();
	}

}

ํ’€์ด

๋‘ ์„ ์ˆ˜์˜ ๋žญํ‚น ์ฐจ์ด์˜ ์ด ํ•ฉ์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋Š”๋ฐ ..

๋…ผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

๋žญํ‚น์ด ๋‚ฎ์€ ์„ ์ˆ˜(์ˆซ์ž๊ฐ€ ํฐ ์ˆ˜)๊ฐ€ ํ† ๋„ˆ๋จผํŠธ์—์„œ ์ž์ฃผ ์˜ฌ๋ผ๊ฐˆ์ˆ˜๋ก ํ•ฉ์€ ํฌ๊ฒŒ ๋‚˜์˜จ๋‹ค.

๋”ฐ๋ผ์„œ ๋žญํ‚น์ด ๋‚ฎ์€ ์„ ์ˆ˜๋ถ€ํ„ฐ ์ฐพ์•„์„œ ๋งค์นญ์„ ์‹œํ‚จ๋‹ค.

 

1. ๋žญํ‚น์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์„ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค.(์ˆซ์ž๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์„ ์ˆ˜)

 

2. 1.์—์„œ ์ฐพ์€ ์„ ์ˆ˜์™€ ์ขŒ, ์šฐ ์„ ์ˆ˜์™€์˜ ์ฐจ์ด์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

  2-1. 2์—์„œ ์ฐพ์€ ์„ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์™ผ์ชฝ => ๊ทธ ์„ ์ˆ˜์˜ ์˜ค๋ฅธ์ชฝ,

  2-1. 2์—์„œ ์ฐพ์€ ์„ ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ => ๊ทธ ์„ ์ˆ˜์˜ ์™ผ์ชฝ,

  2-1. 2์—์„œ ์ฐพ์€ ์„ ์ˆ˜๊ฐ€ ์ค‘์•™ ์–ด๋”˜๊ฐ€ => ๊ทธ ์„ ์ˆ˜์˜ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ๊ณผ ๋น„๊ต

 

3. ๋žญํ‚น์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์„ ์ˆ˜์™€ ์ธ์ ‘ํ•œ ์„ ์ˆ˜์™€์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ–ˆ์œผ๋ฉด, ๋žญํ‚น์ด ๊ฐ€์žฅ ๋‚ฎ์€ ์„ ์ˆ˜๋Š” ์ œ๊ฑฐํ•˜๊ณ  ๊ทธ ๋‹ค์Œ์œผ๋กœ ๋žญํ‚น์ด ๋‚ฎ์€ ์„ ์ˆ˜๋ฅผ ์ฐพ์•„ 1~2์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€