Algorithm/λ¬Έμ œν’€μ΄

[λ°±μ€€] 9655번 - 돌 κ²Œμž„ (C++)

moaoh 2023. 7. 11. 23:54

문제

돌 κ²Œμž„μ€ 두 λͺ…μ΄μ„œ μ¦κΈ°λŠ” μž¬λ°ŒλŠ” κ²Œμž„μ΄λ‹€.

νƒμž μœ„μ— 돌 Nκ°œκ°€ μžˆλ‹€. 상근이와 μ°½μ˜μ΄λŠ” 턴을 λ²ˆκ°ˆμ•„κ°€λ©΄μ„œ λŒμ„ κ°€μ Έκ°€λ©°, λŒμ€ 1개 λ˜λŠ” 3개 κ°€μ Έκ°ˆ 수 μžˆλ‹€. λ§ˆμ§€λ§‰ λŒμ„ κ°€μ Έκ°€λŠ” μ‚¬λžŒμ΄ κ²Œμž„μ„ 이기게 λœλ‹€.

두 μ‚¬λžŒμ΄ μ™„λ²½ν•˜κ²Œ κ²Œμž„μ„ ν–ˆμ„ λ•Œ, μ΄κΈ°λŠ” μ‚¬λžŒμ„ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. κ²Œμž„μ€ 상근이가 λ¨Όμ € μ‹œμž‘ν•œλ‹€.


μž…λ ₯

첫째 쀄에 N이 μ£Όμ–΄μ§„λ‹€. (1 ≤ N ≤ 1000)


좜λ ₯

상근이가 κ²Œμž„μ„ 이기면 SKλ₯Ό, μ°½μ˜μ΄κ°€ κ²Œμž„μ„ 이기면 CY을 좜λ ₯ν•œλ‹€.


예제 μž…λ ₯ 1 λ³΅μ‚¬

5

예제 좜λ ₯ 1 λ³΅μ‚¬

SK

풀이과정

ν•΄λ‹Ή λ¬Έμ œλŠ” dp둜 풀라고 λ‚˜μ˜¨λ¬Έμ œμ΄κΈ΄ν•˜μ§€λ§Œ 문제의 쑰건이 κ°„λ‹¨ν•˜κ²Œ κ΅¬μ„±λ˜μ–΄μžˆμ–΄μ„œ 점화식을 μ„Έμš°λŠ” λ°©μ‹μœΌλ‘œ 풀이λ₯Ό μ§„ν–‰ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

개수 1 2 3 4 5 6
승자 SK CY SK CY SK CY

ν˜•μ‹μœΌλ‘œ μŠΉμžκ°€ λ‚˜λˆ„μ–΄μ§€κ²Œ 되고 짝수면 CY의 승리 ν™€μˆ˜λ©΄ SK의 승리둜 κ²°κ³Όκ°€ λ‚˜μ˜€κ²Œ λ˜λŠ” 점화식을 λ°œκ²¬ν•˜κ²Œ λ˜μ–΄

μž‘μ„±μ„ ν•˜κ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.

code

#include <iostream>

int		main(void)
{
	int n;

	std::cin >> n;
	if (n % 2 == 0) std::cout << "CY";
	else std::cout << "SK";

	return (0);
}


ν›„κΈ°

μ–΄λ–»κ²Œ dp둜 ꡬ성을 ν• κΉŒ 고민을 많이 ν–ˆμ—ˆλŠ”λ° 문제의 쑰건이 κ°„λ‹¨ν•˜κ²Œ λ˜μ–΄μžˆμ–΄μ„œ dpλ₯Ό μ‚¬μš©ν•˜μ§€μ•Šκ³ λ„ ν’€ 수 μžˆμ—ˆλ˜ κ±° κ°™λ‹€.