Hello Ocean! ๐ŸŒผ

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””] ๋ฐฑ์ค€ #1417 ๊ตญํšŒ์˜์› ๋ณธ๋ฌธ

Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””] ๋ฐฑ์ค€ #1417 ๊ตญํšŒ์˜์›

bba_dda 2020. 4. 11. 18:51
๋ฐ˜์‘ํ˜•

[๋ฌธ์ œ]

๊ธฐํ˜ธ 1๋ฒˆ์œผ๋กœ ์ถœ๋งˆํ•œ ๋‹ค์†œ์ด๋Š” ์„ ๊ฑฐ ์ „์— ํ›„๋ณด๋ณ„ ๋“ํ‘œ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์†œ์ด๋Š” ๋“ํ‘œ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์•Œ์•„๋‚ธ ํ›„, ๋‹ค๋ฅธ ํ›„๋ณด๋ฅผ ์ฐ๋Š” ์‚ฌ๋žŒ๋“ค์„ ๋ˆ์œผ๋กœ ๋งค์ˆ˜ํ•ด์„œ ์ž์‹ ์ด ๋‹น์„ ๋˜๊ฒŒ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋‹ค์†œ์ด๊ฐ€ ๋งค์ˆ˜ํ•ด์•ผ ํ•  ์‚ฌ๋žŒ์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด๋ผ.

 

[Input]

N(ํ›„๋ณด์˜ ์ˆ˜)

๋‘˜์งธ ์ค„ ๋ถ€ํ„ฐ ๊ฐ ํ›„๋ณด์˜ ๋“ํ‘œ์ˆ˜๊ฐ€ N์ค„์— ๊ฑธ์ณ์„œ ์ž…๋ ฅ๋œ๋‹ค.

 

[Output]

๋งค์ˆ˜ํ•ด์•ผ ํ•  ์‚ฌ๋žŒ์˜ ์ตœ์†Ÿ๊ฐ’

 

[ํ’€์ด]

์™„์ „ํƒ์ƒ‰

์šฐ์„  ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ•ด๋ณด์ž.

 

์ „์ฒด ํ›„๋ณด์˜ ๋“ํ‘œ์ˆ˜๊ฐ€ votesNum[] ์•ˆ์— ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•˜์ž.

ํ›„๋ณด๊ฐ€ 3๋ช…์ด๊ณ  ๊ฐ ํ›„๋ณด์˜ ์˜ˆ์ƒ ๋“ํ‘œ์ˆ˜๊ฐ€ 5,7,7์ด์—ˆ๋‹ค๊ณ  ํ•˜์ž.

voteNum[]์—์„œ max ์œ„์น˜๋ฅผ ๊ตฌํ•˜๊ณ , ๋‹ค์†œ์ด(๊ธฐํ˜ธ 1๋ฒˆ)๊ฐ€ ์ตœ๋Œ“๊ฐ’์ด ์•„๋‹ ๊ฒฝ์šฐ 

ํ•ด๋‹น max ์œ„์น˜์—์„œ 1์„ ๋นผ๊ณ , ๊ทธ ํ‘œ๋ฅผ ๋‹ค์†œ์ด์—๊ฒŒ ๋”ํ•ด์ค€๋‹ค.

์œ„ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด์„œ ๋‹ค์†œ์ด์˜ ํ‘œ๊ฐ€ maxํ•˜๋‹ค๊ณ  ๋‚˜์˜ค๋ฉด, loop๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์ง€๊ธˆ๊นŒ์ง€ ๋Œ์•„๊ฐ„ loopํšŸ์ˆ˜๋ฅผ printํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด, ์™„์ „ํƒ์ƒ‰์œผ๋กœ ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ ์ œํ•œ์‹œ๊ฐ„์„ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ์„๊นŒ?

N(ํ›„๋ณด์ž์˜ ์ˆ˜)์˜ ์ตœ๋Œ“๊ฐ’์ด 1000์ด๊ณ , ๊ฐ ํ›„๋ณด๊ฐ€ ๋“ํ‘œํ•  ์ˆ˜ ์žˆ๋Š” ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’๋„ 1000์ด๋‹ค.

์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ์˜ ์ตœ์•…์˜ ๊ฒฝ์šฐ๋Š” ์œ„์˜ ์‚ฌ์ง„์—์„œ์™€ ๊ฐ™๋‹ค.

๊ฒฐ๊ณผ์ ์œผ๋กœ ์ตœ์•…์˜ ์ƒํ™ฉ์—์„œ๋„ 999๋ฒˆ๋งŒ loop๋ฅผ ๋Œ๋ฆฌ๋ฉด output์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์™„์ „ํƒ์ƒ‰์œผ๋กœ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

** ํ•œ๋ฒˆ์˜ loop์—์„œ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•  ๋•Œ, N๋งŒํผ์˜ ๋ณต์žก๋„๊ฐ€ ์ถ”๊ฐ€๋กœ ์†Œ์š”๋˜์–ด ์ตœ์•…์˜ ๋ฐ˜๋ณตํšŸ์ˆ˜๋Š” 1000*1000์ด๋‹ค.

ํ•˜์ง€๋งŒ ์ด ๊ฐ’๋„ ์—ฌ์ „ํžˆ 2์ดˆ์•ˆ์— ์ถฉ๋ถ„ํžˆ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

[์ฝ”๋“œ]

#include<stdio.h>
#include<algorithm>

using namespace std;

int main() {
	int voteNum[1001] = {0,}; //์ตœ๋Œ€ ํ›„๋ณด์ž ์ˆ˜ 1000๋ช…
	int N;
	scanf_s("%d",&N);
	for (int i = 0;i < N;i++) {
		scanf_s("%d", &voteNum[i]);
	}
	int M = 0;
	int maxCount = 0;
	for (int i = 0;i < N;i++) {
		if (voteNum[i] > voteNum[M])
			M = i;
		if (M == 0 && voteNum[i] == voteNum[M])
			M = i;
	}
	for (int i = 0;i < N;i++) {
		if (voteNum[i] == voteNum[M])
			maxCount++;
	}
	int count=0;
	while (M != 0 || maxCount > 1) {
		count++;
		voteNum[M]--;
		voteNum[0]++;
		M = 0;
		maxCount = 0;
		for (int i = 0;i < N;i++) {
			if (voteNum[i] > voteNum[M])
				M = i;
			if (M == 0 && voteNum[i] == voteNum[M])
				M = i;
		}
		for (int i = 0;i < N;i++) {
			if (voteNum[i] == voteNum[M])
				maxCount++;
		}
	}
	printf("%d", count);
}

 

M์€ ์ตœ๋Œ“๊ฐ’์˜ ์ธ๋ฑ์Šค

maxCount๋Š” ์ตœ๋Œ“๊ฐ’์˜ ์ˆ˜ ๋ฅผ ๋‹ด๋Š” ๋ณ€์ˆ˜์ด๋‹ค.

while์˜ ์กฐ๊ฑด์„ ๋ณด๋ฉด, M์ด 0(๋‹ค์†œ์ด๊ฐ€ 1๋“ฑ)์ด์–ด๋„ maxCount๊ฐ€ 1 ์ด์ƒ์ด๋ผ๋ฉด ๋™์ ์ž๊ฐ€ ์žˆ๋‹ค๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— maxCount์— ๋Œ€ํ•œ ์กฐ๊ฑด๋„ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ๋‹ค. 

 

[์ œ์ถœ๊ฒฐ๊ณผ]

๋ฐ˜์‘ํ˜•