반응형
알고리즘 분류
- 분할 정복
- 재귀
SOLUTION
import sys
N, r, c = map(int, sys.stdin.readline().split()) # r = 행, c = 열
result = 0
while True:
if N < 1: # 더 이상 쪼개지지 않으므로 종료
break
middle = (N-1) ** 2 # 2^N X 2^N 의 중앙
if r >= middle:
if c >= middle: # 오른쪽 아래 구역
result += ((N-1) ** 4) * 3
r -= middle
c -= middle
else: # 왼쪽 아래 구역
result += ((N-1) ** 4) * 2
r -= middle
else:
if c >= middle: # 오른쪽 위 구역
result += ((N-1) ** 4)
c -= middle
else: # 왼쪽 위 구역
pass
N -= 1
if r == 0:
if c == 0:
print(result) # 왼쪽 위 구역
else:
print(result+1) # 오른쪽 위 구역
else:
if c == 0:
print(result+2) # 왼쪽 아래 구역
else:
print(result+3) # 오른쪽 아래 구역
'코딩테스트 대비 > BOJ' 카테고리의 다른 글
[Baekjoon/Python] 1697번: 숨바꼭질 - 효과는 굉장했다! (0) | 2021.12.25 |
---|---|
[Baekjoon/Python] 1389번: 케빈 베이컨의 6단계 법칙 - 효과는 굉장했다! (0) | 2021.12.25 |
[Baekjoon/Python] 11724번: 연결 요소의 개수 - 효과는 굉장했다! (0) | 2021.11.23 |
[Baekjoon/Python] 11047번: 동전 0 - 효과는 굉장했다! (0) | 2021.11.23 |
[Baekjoon/Python] 5525번: IOIOI - 효과는 굉장했다! (0) | 2021.11.23 |