[BaekJoon] λ°±μ€ 1074λ² : Z
Updated:
1074λ² : Z
μμ μ ν λ² λμ μ νλ€κ° μ λ§ μ΄λ €μ νμ§ λͺ» νλ λ¬Έμ μλ€.
μ²μμ νμμ λλ μ¬κ·λ₯Ό μ΄μ©ν΄ νμλ€. μ μμμ²λΌ 2x2 λ°°μ΄μ΄ λ λ κΉμ§ μͺΌκ° λ€ (r, c) κΉμ§ μ κ°λ κ² μ΄λ€.
def visit_arr(width, i, j):
global count
if width == 2:
dirs = [[0, 0], [0, 1], [1, 0], [1, 1]]
for cur in dirs:
if [i + cur[0], j + cur[1]] == [r, c]:
return
count += 1
return
visit_arr(width // 2, i, j) # μ’μ μμ μ’ν
visit_arr(width // 2, i, j + width // 2) # μ°μ μμ μ’ν
visit_arr(width // 2, i + width // 2, j) # μ’ν μμ μ’ν
visit_arr(width // 2, i + width // 2, j + width // 2) # μ°ν μμ μ’ν
N, r, c = map(int, input().split())
count = 0
visit_arr(2 ** N, 0, 0)
print(count)
νμ§λ§ μκ°μ΄κ³Όκ° λ°μνλ€. λΆλͺ ν νμ΄ λ°©λ²λλ‘ νμλλ° μκ°μ΄κ³Όκ° λμ€λ λ무λ무 μ§μ¦λ¬λ€..
λ€λ₯Έ μ¬λλ€μ΄ μ¬λ¦° μ§λ¬Έλ€μ λ΄€λλ° λ§κΈ΄ νμ§λ§ κ΅μ₯ν λΉν¨μ¨μ μΈ λ°©λ²μ΄μλ€.
λ΄κ° κ°κ³ μ νλ (r, c) μ΄ μ΄λ€ μ¬λΆλ©΄μ μλμ§λ§ μλ€λ©΄ λλ¨Έμ§λ λ°©λ¬Έμ κ΅³μ΄ ν νμκ° μλ€.
N, r, c = map(int, input().split())
count = 0
while True:
width = 2 ** (N - 1)
if width == 1:
if [r, c] == [0, 1]:
count += 1
elif [r, c] == [1, 0]:
count += 2
elif [r, c] == [1, 1]:
count += 3
break
if r < width <= c: # 2μ¬λΆλ©΄
count += width ** 2
c -= width
elif c < width <= r: # 3μ¬λΆλ©΄
count += width ** 2 * 2
r -= width
elif r >= width and c >= width: #4μ¬λΆλ©΄
count += width ** 2 * 3
r -= width
c -= width
N -= 1
print(count)
index κ°μ§κ³ μν λμ΄ νλ λ¬Έμ κ° μ μΌ μ΄λ ΅κ³ μ μΌ μ§μ¦λλ€..
νμ§λ§ κ³μ νμ΄μΌ νλ€..
Leave a comment