본문 바로가기
Problem Solving/BOJ

[BOJ][Python]1074번 풀이

by NoiB 2022. 2. 24.
반응형

https://www.acmicpc.net/problem/1074

 

1074번: Z

한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을

www.acmicpc.net

import sys
ssr = sys.stdin.readline

def sol(n,r,c):
    global result
    if n==0:
        return
    if r<2**(n-1) and c<2**(n-1):
        sol(n-1,r,c)
    elif r<2**(n-1) and c>=2**(n-1):
        result += (2**(n-1))*(2**(n-1))
        sol(n-1,r,c-2**(n-1))
    elif r>=2**(n-1) and c<2**(n-1):
        result += 2*((2**(n-1))*(2**(n-1)))
        sol(n-1,r-2**(n-1),c)
    else:
        result += 3*((2**(n-1))*(2**(n-1)))
        sol(n-1,r-2**(n-1),c-2**(n-1))
    return
    
n,r,c = map(int, ssr().split())
result = 0
sol(n,r,c)
print(result)

이번엔 재귀로 풀어봤습니다. 작년에 재귀가 참 어렵다고 하소연을 했던 기억이 있는데요. 여전히 어렵긴 합니다... 그래도 그 때 보다는 잘쓰고 있겠죠(숱한 백트래킹으로 단련이 되었다고나 할까요 허허...). 사실 이 문제는 단계별 풀어보기에 재귀 마지막 문제랑 상당히 비슷합니다. 작은 단위의 상황과 큰 단위의 상황이 동일하기 때문에 어떻게든 같은 조건으로 정리할 방법만 찾아내면 남은 건 구현뿐인 문제랄까요. 뭐 이렇게 쉽다는 듯이 얘기하곤 있지만 저도 고민을 많이 해서...

 

여러분들은 저보단 훨씬 잘하시리라 믿습니다.

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ][Python]1769번 풀이  (0) 2022.05.18
[BOJ][Python]1107번 풀이  (0) 2022.03.01
[BOJ][Python]백준 1012 풀이  (0) 2022.02.23
[BOJ][Python]18111번 풀이  (0) 2022.02.22