https://www.acmicpc.net/problem/1074
import sys
input = sys.stdin.readline
def zzz(r,c,size,num = 0):
if size == 1:
return num
size = size // 2
if r < size and c < size:
pass
elif r < size and c >= size:
num += (size ** 2)
elif r >= size and c < size:
num += (size ** 2) * 2
elif r >= size and c >= size:
num += (size ** 2) * 3
return zzz(r%size,c%size,size,num)
n,r,c = map(int,input().split())
print(zzz(r,c,2**n))
각 사분면의 크기 증가값은 같다는 거를 생각해서 큰 사분면 부터 시작해서 원하는 행 열까지 내려 가면서 구했다.
함수를 다시 호출 할 때 나머지를 사용한 이유는 위에서 말한 것 처럼 같은 크기의 사각형이면 증가하는 값은 같기 때문에 재귀를 사용 할 수 있었다.
이번 문제에서는 pypy를 사용 했을때 시간이 더 걸리는 경우였다. 무조건 pypy3가 시간이 더 걸린다고 생각을 했는데 간단한 코드 에서는 파이썬이 더 빠르게 동작하는거 같았다. 이런 경우는 앞으로 돌려보면서 해봐야겠다.
'백준 문제 풀이 및 피드백' 카테고리의 다른 글
2023.01.28 예산 백준[파이썬] (0) | 2023.01.28 |
---|---|
2023.01.28 절댓값 힙 [파이썬] (0) | 2023.01.28 |
2023.01.25 경로찾기 백준[파이썬] (0) | 2023.01.25 |
2023.01.23 파도반 수열 백준[파이썬] (0) | 2023.01.23 |
2023.01.20 집합 백준[파이썬] (0) | 2023.01.20 |