โถ ๋ฌธ์
โถ ์ฝ๋
N, r, c = map(int, input().split())
l = 2 ** N
def recursiveZ (x, y, l, startIndex):
global answer, r, c
if l == 2:
if (x,y) == (r,c):
answer = startIndex
elif (x,y+1) == (r,c):
answer = startIndex + 1
elif (x+1,y) == (r,c):
answer = startIndex + 2
elif (x+1,y+1) == (r,c):
answer = startIndex + 3
elif l > 2 :
dividedL = l // 2
if r < dividedL and c < dividedL:
recursiveZ(x ,y, dividedL, startIndex)
elif r < dividedL and c >= dividedL:
c -= dividedL
recursiveZ(x ,y,dividedL, startIndex+(dividedL**2))
elif r >= dividedL and c < dividedL:
r -= dividedL
recursiveZ(x, y,dividedL, startIndex + (dividedL**2) * 2)
elif r >= dividedL and c >= dividedL:
r -= dividedL
c -= dividedL
recursiveZ(x, y,dividedL, startIndex+ (dividedL**2) * 3)
answer = 0
recursiveZ(0,0,l,0)
print(answer)
โถ ๋ฌธ์ ํ์ด
1. ์ด๊ธฐ ์ ์ฒด ํฌ๊ธฐ์์ 2 ร 2 ํฌ๊ธฐ์ ๋ฐฐ์ด์ด ๋ ๋๊น์ง ํ์ํ๋ ์ฌ๊ท๋ฅผ ์๊ฐ
2. ํ๋ณ์ ๊ธธ์ด l ์ด 2 ์ผ ๊ฒฝ์ฐ ์ขํ๋ฅผ ๋น๊ตํด r,c ์ ๊ฐ๋ค๋ฉด ๊ฐ ๊ฒฝ์ฐ์ ๋ง๋ index๋ฅผ ๋ฐํ
3. l ์ด 2๋ณด๋ค ํฐ ๊ฒฝ์ฐ ๊ฐ๊ฐ 1, 2, 3, 4 ๋ถ๋ฉด์ ๋ํด (r, c) ์ ์ขํ ๊ฐ์ 0, 0 ์ผ๋ก ๋ณํํด์ฃผ๋ฉด index ๊ฐ์ ๋ํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ฌ๊ท๋ฅผ ์งํ => ๊ฐ ์ฌ๋ถ๋ฉด ๋ง๋ค์ ํน์ฑ์ ๋ง๊ฒ ๊ตฌํ
4. ์ฌ๊ทํจ์ ํธ์ถ ๋ฐ ์ถ๋ ฅ
'๐ฏ CodingTest > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] 1463 1๋ก ๋ง๋ค๊ธฐ (0) | 2022.04.14 |
---|---|
[BaekJoon] 1107 ๋ฆฌ๋ชจ์ปจ (0) | 2022.04.14 |
[BaekJoon] 1012 ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2022.04.12 |
[BaekJoon] 1003 ํผ๋ณด๋์น ํจ์ (0) | 2022.04.12 |
[BaekJoon] 18111 ๋ง์ธํฌ๋ํํธ (0) | 2022.04.11 |