ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

 

 

๋ฐฑ์ค€ 1074๋ฒˆ Z ์ž…๋‹ˆ๋‹ค.

 

๋ฌธ์ œ๋ฅผ ๋ณด์ž๋ฉด,

 

( ์ด๋ฏธ์ง€ ํด๋ฆญํ•˜๋ฉด ํฌ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์Œ )

 

 

 

๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๊ฐ€๋กœ (2 ** N ) * ์„ธ๋กœ (2 ** N) ์ด๋ฉฐ,

๊ทธ ๋ฐฐ์—ด์•ˆ์—๋Š” ์œ„์™€ ๊ฐ™์€ z ๋ชจ์–‘์˜ ๊ทœ์น™์„ ๊ฐ€์ง€๋ฉฐ ์ˆซ์ž๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค.

 

 

 

 

 

๊ทธ๋žฌ์„๋•Œ (r,c) ์ขŒํ‘œ์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ ๊ตฌํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

 

์˜ˆ์ œ ์ž…๋ ฅ2 ( 3, 7, 7 ) ์˜ˆ์ œ๋ฅผ ๋ณผ๊ฒŒ์š”.

 

 

 

N์ด 3์ผ๋•Œ , 7ํ–‰ 7์—ด์˜ ๊ฐ’์ด 63์ธ ๋ชจ์Šต. 

 

 

( ๊ณ ๋ฏผํƒ€์ž„.. )

 

 

 

 

 

 

 

 

 

 

 

 

-----------------------------------------------------------

 

 

1074๋ฒˆ ๋ฌธ์ œ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜

 

 

๋ฌธ์ œ ์œ ํ˜•์€ ๋ถ„ํ• ์ •๋ณต๊ณผ ์žฌ๊ท€๋ผ๊ณ  ํ•˜๋„ค์š”

 

๊ฐ„๋‹จํ•ด ๋ณด์ด์ง€๋งŒ ์ƒ๋‹นํžˆ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค ใ…œ..

 

2์˜ n๊ฐœ๋งŒํผ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  ์ˆซ์ž๋ฅผ ๋„ฃ๊ณ  ์ขŒํ‘œ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ฐพ์œผ๋ ค๊ณ  ํ–ˆ์œผ๋‚˜

์กฐ๊ฑด์œผ๋กœ N ์€ 15 ๊นŒ์ง€ ๊ฐ€๋Šฅํ•˜๋‹ˆ๊น ๊ฐ€๋กœ 2์˜ 15์Šน * ์„ธ๋กœ 2์˜ 15์Šน = 2์˜ 30์Šน.. ๋”ฑ๋ด๋„ ์•„๋‹ˆ์ฃ ?

๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š”๊ฒƒ์€ ์•„๋‹Œ๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

 

2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์ด๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. (๋ถ„ํ• , ์žฌ๊ท€)

 

์ฒซ์งธ๋กœ, ๋ถ„ํ• ์ •๋ณต ์ธก๋ฉด์œผ๋กœ ์ ‘๊ทผํ•˜์ž๋ฉด, ๊ณ„์† 4๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ทœ์น™์œผ๋กœ ๋ถ„ํ• ํ•  ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ณ„์† ์–ด๋–ค์˜์—ญ์— ์†ํ•ด์žˆ๋‚˜ ๋ถ„ํ• ํ•ด๊ฐ€๋ฉฐ, ์ขŒํ‘œ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์˜ ๊ทœ์น™์„ ์ฐพ์•„๊ฐ€๋ณผ๊ฒŒ์š”.

 

( N = 3, 7ํ–‰ 7์—ด์˜ ๊ฐ’์€ 63 )

 

 

์ฒซ๋ฒˆ์งธ  ( N = 3 )

 

์ด๋ ‡๊ฒŒ 4๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๊ณ„์† ๋ถ„ํ• ํ•˜๋ฉฐ ์–ด๋–ค ๊ทœ์น™์ด ์žˆ๋‚˜ ์•Œ์•„๋ณผ๊ฒŒ์š”

 

์ฒซ๋ฒˆ์งธ๋กœ ์ชผ๊ฐฐ์„๋•Œ ( 7 , 7 ) ์€ N = 3์ธ ์˜์—ญ์—์„œ ์ œ4 ์‚ฌ๋ถ„๋ฉด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. 

( ์ฝ”๋“œ๋กœ ์ ‘๊ทผํ•˜๋ฉด ๊ฐ€๋กœ ์ขŒํ‘œ 7 >= 2์˜ 2์Šน , ์„ธ๋กœ ์ขŒํ‘œ 7 >= 2์˜ 2์Šน ์ด๋ฏ€๋กœ ์ œ4 ์‚ฌ๋ถ„๋ฉด. )

 

๊ทธ๋ฆฌ๊ณ  ์ œ 4์‚ฌ๋ถ„๋ฉด์€ 48๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ์Šต.

 

๊ฐ ์‚ฌ๋ถ„๋ฉด์˜ ๊ฐœ์ˆ˜๋Š” 16 ( 2์˜ 2์Šน * 2์˜ 2์Šน ) ์ด๋‹ˆ๊นŒ

 

์ œ2 ์‚ฌ๋ถ„๋ฉด์€ 0

์ œ1 ์‚ฌ๋ถ„๋ฉด์€ 16

์ œ3 ์‚ฌ๋ถ„๋ฉด์€ 32

์ œ4 ์‚ฌ๋ถ„๋ฉด์€ 48๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ณ  ์žˆ์–ด์š”

 

 

๋‘๋ฒˆ์งธ. N = 2 ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์ฃ ?

 

๋‘๋ฒˆ์งธ๋กœ ์ชผ๊ฐฐ์„๋• ( 7 , 7 ) ์˜ ์ขŒํ‘œ๋Š” ( 3 , 3 ) ์ด ๋ฉ๋‹ˆ๋‹ค.

( ๊ฐ€๋กœ์„ธ๋กœ๊ฐ€ ๋„ค์นธ์”ฉ ์ค„์–ด๋“œ๋‹ˆ๊น, 7 - 2์˜ 2์Šน = 3.)

 

๋˜ํ•œ ( 3 , 3 ) ์€ N = 2์ธ ์˜์—ญ์—์„œ ์ œ4 ์‚ฌ๋ถ„๋ฉด์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ์Šต.

( 3 >= 2์˜ 1์Šน , 3 >= 2์˜ 1์Šน ์ด๋ฏ€๋กœ )

 

48์„ ๋บ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, 

์ œ4 ์‚ฌ๋ถ„๋ฉด์€ 12๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

( ๊ฐ ์‚ฌ๋ถ„๋ฉด์˜ ๊ฐœ์ˆ˜๊ฐ€ 2์˜ 2์Šน ์œผ๋กœ 4 ๋‹ˆ๊น 4 * 3 = 12. )

 

( N = 2, 3ํ–‰ 3์—ด์˜ ๊ฐ’์€ 63 - 48 = 12 )

 

 

 

 

์„ธ๋ฒˆ์งธ N = 1

 

 

์„ธ๋ฒˆ์งธ๋กœ ์ชผ๊ฐœ๋ฉด ( 3 , 3 ) ์˜ ์ขŒํ‘œ๋Š” ( 1 , 1 ) ๋กœ, ์ œ4 ์‚ฌ๋ถ„๋ฉด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

( ๊ฐ€๋กœ์„ธ๋กœ๊ฐ€ ๋‘์นธ์”ฉ ์ค„์–ด๋“œ๋‹ˆ๊น, 3 - 2์˜1์Šน = 1 )

 

๊ทธ๋ฆฌ๊ณ  48์„ ๋นผ๊ณ  12 ๋ฅผ ๋˜ ๋บ์„๋•Œ 

์ œ 4์‚ฌ๋ถ„๋ฉด์ธ ( 1 , 1 )์€ 3์ธ ๋ชจ์Šต

(๊ฐ ์˜์—ญ์˜ ๊ฐœ์ˆ˜๋Š” 2์˜ 0์Šน ์œผ๋กœ 1 ๋‹ˆ๊น 1 * 3  = 3.)

 

๊ทธ๋ž˜์„œ 48 + 12 + 3 ์€ 63์ด ๋ฉ๋‹ˆ๋‹ค.

 

( N = 1, 1ํ–‰ 1์—ด์˜ ๊ฐ’์€ 63 - 48 - 12 = 3 )

 

 

 

๊ทœ์น™์ด ์กฐ๊ธˆ ๋ณด์ด์‹œ๋‚˜์š”?

 

 

 

์ฝ”๋“œ๋กœ ๋ณด์‹ ๋‹ค๋ฉด ๋” ์ดํ•ดํ•˜์‹œ๊ธฐ ์‰ฌ์šธ ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

N, r, c = map(int, input().split())

ans = 0

while N != 0:

	N -= 1

	# ์ œ2์‚ฌ๋ถ„๋ฉด
	if r < 2 ** N and c < 2 ** N:
		ans += ( 2 ** N ) * ( 2 ** N ) * 0

	# ์ œ1์‚ฌ๋ถ„๋ฉด
	elif r < 2 ** N and c >= 2 ** N: 
		ans += ( 2 ** N ) * ( 2 ** N ) * 1
		c -= ( 2 ** N )
        
	# ์ œ3์‚ฌ๋ถ„๋ฉด    
	elif r >= 2 ** N and c < 2 ** N: 
		ans += ( 2 ** N ) * ( 2 ** N ) * 2
		r -= ( 2 ** N )
        
	# ์ œ4์‚ฌ๋ถ„๋ฉด    
	else:
		ans += ( 2 ** N ) * ( 2 ** N ) * 3
		r -= ( 2 ** N )
		c -= ( 2 ** N )
    
print(ans)

 

์ž˜ ์ž‘๋™ํ•˜๋Š” ๋ชจ์Šต

 

 

 

์ด๋Ÿฐ์‹์œผ๋กœ 4๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๊ณ„์† ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

 

 

 

์ด๋ฒˆ์—” ์žฌ๊ท€๋กœ ์ ‘๊ทผํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

๋นจ๊ฐ„์„  Z๋ฅผ ๋‹ค์ง€์šฐ๊ณ  ( ๋นจ๊ฐ„์„  ๋„ˆ๋ฌด๋‚˜ ๊ฐ•๋ ฌ.. )

 

์ž์„ธํžˆ ๋ณด๋ฉด

 

 

 

 

์ œ์ผ ์ž‘์€ 2*2 ๋ฐ•์Šค

 

0  1

2  3

๋กœ๋ถ€ํ„ฐ ๊ฐ๊ฐ ( 0 ์ œ์™ธ )

 

 

์ขŒํ‘œr,c๊ฐ€ 2๋ฐฐ๊ฐ€ ๋จ์— ๋”ฐ๋ผ

๊ฐ’์ด 4์˜ ๋ฐฐ์ˆ˜๋กœ ํ™•์žฅํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

ex)  8 ( 2, 0 ) - > 32 ( 4, 0 )

ex) 14 ( 2, 3 ) - > 56 ( 4, 6 )

 

 

์ด ๋ฐฉ์‹์œผ๋กœ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ฉด,

 

N, r, c = map(int, input().split())

def sol(N, r, c):

	if N == 0:
		return 0
        
	return 2*(r%2)+(c%2) + 4*sol(N-1, int(r/2), int(c/2))

print(sol(N, r, c))

 

์ด๋ ‡๊ฒŒ๋„ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

2*(r%2)+(c%2)๋Š” ๊ทธ๋ฆผ์—์„œ ํ™”์‚ดํ‘œ๋ผ๊ณ  ๋ณด์‹œ๋ฉด๋ฉ๋‹ˆ๋‹ค.

4์˜ ๋ฐฐ์ˆ˜์ธ ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ๋„ค๋ชจ์นธ์—์„œ ์ด๋™ํ•˜๋Š”

( 12์™€ 0 ์—๋„ ๋ณด์ด์ง€ ์•Š๋Š” ํ™”์‚ดํ‘œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๋ชจ์Šต. )

 

 

4*sol( N-1, int(r/2), int(c/2) ) ๋Š”

์ด์ œ 4์˜ ๋ฐฐ์ˆ˜ํ•˜๊ธฐ ์ด์ „์˜ ๊ฐ’์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์ฃ ..! ( ์ด์ „ ๊ฐ’์˜ ์ขŒํ‘œ๊ฐ€ r // 2, c // 2 )

 

N์ด 0์ด ๋  ๋•Œ๊นŒ์ง€

 

์ •๋ง ์งง์ฃ  ์—ญ์‹œ ์žฌ๊ท€์ž…๋‹ˆ๋‹ค.

 

 

์ถ”๊ฐ€ ์˜ˆ์‹œ๋กœ

44๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณผ๊ฒŒ์š”. 44๋Š” 11์—์„œ 4๋ฅผ ๊ณฑํ•œ์ˆ˜์ž…๋‹ˆ๋‹ค.

11์€ 8์—์„œ 3์„ ๋”ํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ( 2 * (1) + 1 = 3 )

8์€ 2์— 4๋ฅผ ๊ณฑํ•œ์ˆ˜์ฃ ?

 

๊ทธ๋ž˜์„œ  0 + 4 * ( 3 + 4 * ( 2 + 4 * ( 0 ) ) ) ๋Š” 44 ๊ฐ€ ๋‚˜์˜ค๋Š” ๋ชจ์Šต.

 

 

์ฝ”๋“œ๋งŒ ๋ณด๋ฉด ์–ด๋ ค์šธ ์ˆ˜๋„ ์žˆ์ง€๋งŒ,

๊ทธ๋ฆผ๊ณผ ํ•จ๊ป˜ ๋ณด์‹ ๋‹ค๋ฉด ์ดํ•ดํ•˜์‹œ๋Š”๋ฐ ๋„์›€์ด ๋ ๊ฑฐ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค~

 

 

 

์ด๋ ‡๊ฒŒ ์žฌ๊ท€๋กœ๋„ ํ’€์–ด๋ดค์Šต๋‹ˆ๋‹ค.

 

 

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

 

 

 

๋ฌธ์ œ ์ถœ์ฒ˜ : https://www.acmicpc.net/problem/1074

๋Œ“๊ธ€