첫 번째 방법은 규칙성으로 풀었다.
import sys
input = sys.stdin.readline
N, r, c = map(int, input().split())
cnt = 0
while N > 1:
size = (2 ** N) // 2
if r < size and c < size:
pass
elif r < size and c >= size:
cnt += size ** 2
c -= size
elif r >= size and c < size:
cnt += size ** 2 * 2
r -= size
elif r >= size and c >= size:
cnt += size ** 2 * 3
r -= size
c -= size
N -= 1
if r == 0 and c == 0:
print(cnt)
if r == 0 and c == 1:
print(cnt + 1)
if r == 1 and c == 0:
print(cnt + 2)
if r == 1 and c == 1:
print(cnt + 3)
두 번째 방법은 재귀함수로도 풀 수 있겠다고 생각했다.
https://ggasoon2.tistory.com/11
위 게시글을 참고해서 작성했다.
import sys
input = sys.stdin.readline
N, r, c = map(int, input().split())
def sol(N, r, c):
if N == 0:
return 0
return 2*(r%2)+(c%2) + 4 * sol(N-1, int(r/2), int(c/2))
print(sol(N, r, c))
'백준' 카테고리의 다른 글
[백준] 2579번 파이썬 (계단 오르기) (0) | 2024.03.09 |
---|---|
[백준] 1463번 파이썬 (1로 만들기) (0) | 2024.03.07 |
[백준] 1012번 파이썬 (유기농 배추) (0) | 2024.02.29 |
[백준] 18111번 파이썬 (마인크래프트) (0) | 2024.02.25 |
[백준] 18110번 파이썬 (solved.ac) (0) | 2024.02.24 |