본문 바로가기
코딩테스트 파이썬/백준

Z

by 세용용용용 2024. 11. 20.

1074번: Z

 

나의 풀이 : (분할 정복.. 아이디어 생각하는게 너무 어려웠습니다.. ㅠㅠ)

import sys
# n : 맵 크기, (r,c) : 좌표
N, r, c = map(int, sys.stdin.readline().rstrip().split())

def div_map(N, r, c):
    if N == 0:
        return 0

    half = 2**(N-1)
    map_size = half * half
    
    # 1사분면
    if (r < half) and (c < half):
        return div_map(N-1, r, c)
    # 2사분면
    if (r < half) and (c >= half):
        return map_size + div_map(N-1, r, c-half)
    # 3사분면
    if (r >= half) and (c < half):
        return map_size * 2 + div_map(N-1, r-half, c)
    # 4사분면
    else:
        return map_size * 3 + div_map(N-1, r-half, c-half)

print(div_map(N, r, c))

 

시간 복잡도

def div_map(N, r, c) : 조건 만족시 까지 분할정복하는 함수 ( 선형 시간 복잡도 )
해당 알고리즘 시간 복잡도는 : 선형 시간 복잡도 ( O(n) )

'코딩테스트 파이썬 > 백준' 카테고리의 다른 글

토마토 (7569)  (0) 2024.11.22
AC  (0) 2024.11.20
쉬운 최단거리  (2) 2024.11.18
경로 찾기  (0) 2024.11.17
IOIOI  (0) 2024.11.15