1074번: Z
한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. 만약, N > 1이 라서
www.acmicpc.net
- 4사분면으로 나누어서 해당되는 면을 찾는다.
- 앞에 면을 다 더해줌 - 1사분면 (x) / 2사분면 (1) / 3사분면 (1,2,4) / 4사분면 (1,2)
- 점점 쪼개서 같은방식으로 구한다
import sys
N, R, C = map(int, input().split())
answer = 0
while(True):
quarter = (2**N)//2
if N == 1:
if R == 0 and C == 1:
answer += 1
elif R == 1 and C == 0:
answer += 2
elif R == 1 and C == 1:
answer += 3
break
else:
cnt = 0
if R < quarter and C >= quarter:
cnt = 1
C -= quarter
elif R >= quarter and C < quarter:
cnt = 2
R -= quarter
elif R >= quarter and C >= quarter:
cnt = 3
C -= quarter
R -= quarter
answer += (quarter**2)*cnt
N -= 1
print(answer)
'개발 > 알고리즘' 카테고리의 다른 글
| [백준 11723] 집합 (python) (0) | 2021.03.18 |
|---|---|
| [백준 1541] 잃어버린 괄호 (python) (0) | 2021.03.18 |
| [백준 14888] 연산자 끼워넣기 (python) (0) | 2021.03.17 |
| [백준 17144] 미세먼지 안녕! (python) (0) | 2021.03.17 |
| [백준 14891] 톱니바퀴 (python) (0) | 2021.03.16 |




최근댓글