
# 입력 받기
N, r, c = map(int, input().split())
# ans 초기 설정
ans = 0
# 4사분면으로 나눠서 생각 -> 계속 좁혀 갈 예정
while N != 0:
N -= 1
# 1사분면에 해당할 경우
if r < (2 ** N) and c < (2 ** N):
ans += 0 # 더해줄 것 없음
# 2사분면에 해당할 경우
elif r < (2 ** N) and c >= (2 ** N):
ans += (2 ** (2 * N)) # 그 사분면의 맨 왼쪽 위 꼭짓점을 더해줌
c -= (2 ** N) # 다음 좁혀진 4사분면으로 이동
# 3사분면에 해당할 경우
elif r >= (2 ** N) and c < (2 ** N):
ans += (2 ** (2 * N)) * 2 # 그 사분면의 맨 왼쪽 위 꼭짓점을 더해줌
r -= (2 ** N) # 다음 좁혀진 4사분면으로 이동
# 4사분면에 해당할 경우
else:
ans += (2 ** (2 * N)) * 3 # 그 사분면의 맨 왼쪽 위 꼭짓점을 더해줌
r -= (2 ** N) # 다음 좁혀진 4사분면으로 이동
c -= (2 ** N) # 다음 좁혀진 4사분면으로 이동
print(ans)
'Algorithm(BOJ, Python) > Dynamic Programing' 카테고리의 다른 글
| [백준_2225] 합분해 python (0) | 2022.06.21 |
|---|---|
| [백준_10844] 쉬운 계단 수 python (0) | 2022.06.20 |
| [백준_15990] 1, 2, 3 더하기 5 python (0) | 2022.06.18 |
| [백준_11727] 2×n 타일링 2 python (0) | 2022.06.16 |
| [백준_1309] 동물원 python (0) | 2022.06.14 |