해결 과정
시간 제한이 적은 것을 보고 for문을 돌리면서 다 저장해놓고 후에 (x, y)를 찾는 건 아니겠구나 싶었다. 반복되는 구조이다 보니 재귀라는 것을 바로 떠올릴 수 있었고, (x, y)가 4등분 중 어느 곳에 속하는지를 먼저 판별한 뒤, count를 더해가는 방식으로 풀었다.
나의 풀이
import math
def recursion(size, x, y):
global count
# 4등분 중 어느 위치인지 파악
if size == 1:
point = math.pow(2, size - 1)
if x < point:
if y < point:
# 0, 0
count += 0
else:
# 0, 1
count += 1
else:
if y < point:
# 1, 0
count += 2
else:
# 1, 1
count += 3
print(int(count))
return
else:
point = math.pow(2, size - 1)
if x < point:
if y < point:
# 0, 0
count += point * point * 0
recursion(size-1, x, y)
else:
# 0, 1
count += point * point * 1
recursion(size-1, x, y - point)
else:
if y < point:
# 1, 0
count += point * point * 2
recursion(size-1, x - point, y)
else:
# 1, 1
count += point * point * 3
recursion(size-1, x - point, y - point)
N, r, c = map(int, input().split())
count = 0
recursion(N, r, c)
다른 풀이
IDEA
'Coding Test > 문제 풀이' 카테고리의 다른 글
[문제 풀이] 백준 1463 (0) | 2022.04.04 |
---|---|
[문제 풀이] 백준 1389 (0) | 2022.04.04 |
[문제 풀이] 백준 1012 (0) | 2022.03.29 |
[문제 풀이] 실패율 (0) | 2022.03.25 |
[문제 풀이] 백준 10825 (0) | 2022.03.25 |