TIL) 1074 Z
🎃 4분면으로 나누기
💡 아이디어
- 전체 사이즈가 2의 제곱으로 증가하기 때문에 전체를 4분면으로 나눠서 한 변의 길이가 2가 될때까지 나눈다.
- 한 변의 길이가 2가 되면 r과 c를 이용해서 숫자를 찾는다.
- 숫자를 찾기 위해서는 가장 왼쪽 맨 위의 숫자에 주목해서 재귀를 통해 사이즈가 작아질 때마다 idx를 이용해서 시작하는 숫자를 지정해줘야한다.
N, r, c = map(int, input().split())
def divide(size, r, c):
idx = 0
if size == 2:
return r * 2 + c * 1
half = size // 2
if r < half and c < half:
return idx + divide(half, r, c)
elif r < half and c >= half:
idx += int(size * size / 4)
return idx + divide(half, r, c-half)
elif r >= half and c < half:
idx += int(size * size / 4 * 2)
return idx + divide(half, r-half, c)
else:
idx += int(size * size / 4 * 3 )
return idx + divide(half, r-half, c-half)
print(divide(2**N, r, c))
Author And Source
이 문제에 관하여(TIL) 1074 Z), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mongle/week01-1074-Z저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)