Algorithm/๋ฌธ์ œํ’€์ด

[๋ฐฑ์ค€] 9657๋ฒˆ - ๋Œ ๊ฒŒ์ž„ 3 (C++)

moaoh 2023. 7. 12. 23:53

๋ฌธ์ œ

๋Œ ๊ฒŒ์ž„์€ ๋‘ ๋ช…์ด์„œ ์ฆ๊ธฐ๋Š” ์žฌ๋ฐŒ๋Š” ๊ฒŒ์ž„์ด๋‹ค.

ํƒ์ž ์œ„์— ๋Œ N๊ฐœ๊ฐ€ ์žˆ๋‹ค. ์ƒ๊ทผ์ด์™€ ์ฐฝ์˜์ด๋Š” ํ„ด์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ๋Œ์„ ๊ฐ€์ ธ๊ฐ€๋ฉฐ, ๋Œ์€ 1๊ฐœ, 3๊ฐœ ๋˜๋Š” 4๊ฐœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋Œ์„ ๊ฐ€์ ธ๊ฐ€๋Š” ์‚ฌ๋žŒ์ด ๊ฒŒ์ž„์„ ์ด๊ธฐ๊ฒŒ ๋œ๋‹ค.

๋‘ ์‚ฌ๋žŒ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๊ฒŒ์ž„์„ ํ–ˆ์„ ๋•Œ, ์ด๊ธฐ๋Š” ์‚ฌ๋žŒ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๊ฒŒ์ž„์€ ์ƒ๊ทผ์ด๊ฐ€ ๋จผ์ € ์‹œ์ž‘ํ•œ๋‹ค.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 1000)


์ถœ๋ ฅ

์ƒ๊ทผ์ด๊ฐ€ ๊ฒŒ์ž„์„ ์ด๊ธฐ๋ฉด SK๋ฅผ, ์ฐฝ์˜์ด๊ฐ€ ๊ฒŒ์ž„์„ ์ด๊ธฐ๋ฉด CY์„ ์ถœ๋ ฅํ•œ๋‹ค.


 

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

6

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

SK

ํ’€์ด๊ณผ์ •

๋Œ๊ฒŒ์ž„, ๋Œ๊ฒŒ์ž„ 2 ๋•Œ์—๋Š” ์ ํ™”์‹๋งŒ ์ƒ๊ฐํ•ด์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์ด๊ฐ€ ๊ฐ€๋Šฅํ–ˆ์—ˆ๋Š”๋ฐ

๋Œ๊ฒŒ์ž„ 3๋ถ€ํ„ฐ๋Š” "๋Œ์€ 1๊ฐœ, 3๊ฐœ ๋˜๋Š” 4๊ฐœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค." ๋ผ๋Š” ์กฐ๊ฑด์ด ์ถ”๊ฐ€๊ฐ€ ๋˜์–ด์„œ ์ ํ™”์‹์„ ์„ธ์šฐ๋ ค๊ณ ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ๋“ 

์„ธ์šธ ์ˆ˜ ์žˆ์„๊ฑฐ๊ฐ™์€๋ฐ. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๊ฐ€ dp์ธ ๋งŒํผ dp๋กœ ์ ‘๊ทผํ•ด์„œ ํ’€์–ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

๋Œ 1๊ฐœ 2๊ฐœ 3๊ฐœ 4๊ฐœ
์Šน์ž SK CY SK SK

์ด์ „์— ํ’€์—ˆ๋˜ ํ‡ด์‚ฌ๋ฌธ์ œ์ฒ˜๋Ÿผ dp๋ผ๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ์ด์ „์— ๋งŒ๋“ค์–ด์ง„ ๊ฐ’๋“ค์„ ์ฐธ์กฐํ•ด์„œ ํ˜„์žฌ์˜ ๊ฐ’์„ ๊ตฌํ•ด๋‚ด๋Š” ๋ฐฉ์‹์ด๋ฏ€๋กœ

์กฐ๊ฑด์„ ๋˜‘๊ฐ™์ด ์ƒ๊ฐํ•ด์„œ ์ด์ „์˜ ๊ฐ’์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‹์„ ์„ธ์› ์Šต๋‹ˆ๋‹ค.

๋Œ 1๊ฐœ 2๊ฐœ 3๊ฐœ 4๊ฐœ 5๊ฐœ
์Šน์ž SK CY SK SK ?

์กฐ๊ฑด์‹์€ 5๊ฐœ์˜ ๋Œ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒํ™ฉ์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •์„ ํ•ด๋ณด์ž.

์ง€๊ธˆ ๊ตฌํ•ด์•ผํ•˜๋Š”๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋Œ์ด 5๊ฐœ์ผ ๋•Œ์˜ ์Šน์ž๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋Š”๋ฐ 5๊ฐœ์ผ ๋•Œ์˜ ์Šน์ž๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ด์ „์— ๊ฐ’๋“ค์„ ์ฐธ์กฐํ•ด์„œ ์˜ˆ์ธก์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

"๋Œ์€ 1๊ฐœ, 3๊ฐœ ๋˜๋Š” 4๊ฐœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค." ๋ผ๊ณ  ๋ฌธ์ œ์—์„œ ๋ช…์‹œ๊ฐ€ ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—

์ฆ‰ 5๊ฐœ - 1๊ฐœ, 5๊ฐœ - 3๊ฐœ, 5๊ฐœ - 4๊ฐœ์˜ ์Šน์ž๋ฅผ ๋ฏธ๋ฆฌ ์•Œ๊ณ ์žˆ๋‹ค๋ฉด ๋ˆ„๊ฐ€ ์ด๊ธธ์ง€ ์˜ˆ์ธก์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์‹์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒŒ์ž„์˜ ์‹œ์ž‘์€ ์ƒ๊ทผ์ด๊ฐ€ ํ•œ๋‹ค๊ณ  ๋ฌธ์ œ์—์„œ ๋ช…์‹œ๊ฐ€ ๋˜์–ด์žˆ์–ด ์ƒ๊ทผ์ด๊ฐ€  5๊ฐœ์—์„œ ๋Œ์„ 3๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐ”๋‹ค๋ฉด ๋‚จ์€ ๋Œ์˜ ๊ฐœ์ˆ˜๋Š” 2๊ฐœ์ด๊ณ 

๋Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ์˜ ๊ฒฝ์šฐ ๋จผ์ € ์„ ๊ณต์ž๊ฐ€ SK์ด ์ผ ๋•Œ ์Šน์ž๊ฐ€ CY๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋๊นŒ์ง€ ๊ณ„์‚ฐ์„ ํ•ด๋ณด์ง€ ์•Š์•„๋„ ์˜ˆ์ธก์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ dp์‹์„ ์„ธ์šธ ์ˆ˜ ์žˆ๊ณ , ์„ ๊ณต์ž๊ฐ€ SK์ด๋‹ค ๋ณด๋‹ˆ SK๋Š” n - 1, n - 3, n - 4 ์ค‘์— ๋ณธ์ธ์ด ์Šน๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 1๊ฐœ๋ผ๋„ ์žˆ๋Š” ๊ฒฝ์šฐ SK๋Š” ์ด๊ธฐ๊ฒŒ ๋œ๋‹ค.

์ด๋Ÿฌํ•œ ํ˜•์‹์œผ๋กœ ์ƒ๊ฐ์„ ํ•˜๊ณ  ์ฝ”๋“œ๋กœ ์˜ฎ๊ฒจ์„œ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค.

code

#include <iostream>

int		dp[1001] = {0};

// SK = 0, CY = 1
void	stone(int n)
{
	dp[1] = 0;
	dp[2] = 1;
	dp[3] = 0;
	dp[4] = 0;
	for(int i = 5; i <= n; i++) {
		if (dp[i - 1] == 1 || dp[i - 3] == 1 || dp[i - 4] == 1)
			dp[i] = 0;
		else
			dp[i] = 1;
	}
}

int		main(void)
{
	int n;

	std::cin >> n;
	stone(n);
	if (dp[n] == 0) std::cout << "SK";
	else std::cout << "CY";

	return (0);
}


ํ›„๊ธฐ

์ฒ˜์Œ์— stone์•ˆ์— ์žˆ๋Š” ์กฐ๊ฑด์‹์—์„œ ์กฐ๊ฑด์„ ๋ฐ˜๋Œ€๋กœ ์ƒ๊ฐํ•ด์„œ ์ž๊พธ ํ‹€๋ ธ์—ˆ๋‹ค.

๋กœ์ง์„ ์กฐ๊ธˆ ๋” ์‹ ์ค‘ํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋Š” ๋…ธ๋ ฅ์„ ํ•ด์•ผํ•  ๊ฑฐ ๊ฐ™๋‹ค.

๋Œ“๊ธ€์ˆ˜0