-코드
def sol(x, y, num):
color = arr[x][y]
for i in range(x, x + num):
for j in range(y, y + num):
if color != arr[i][j]:
sol(x, y, num // 2)
sol(x, y + num // 2, num // 2)
sol(x + num // 2, y, num // 2)
sol(x + num // 2, y + num // 2, num // 2)
return
if color == 0:
result[0] += 1
else:
result[1] += 1
n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
result = [0, 0]
sol(0, 0, n)
print(result[0])
print(result[1])
처음에 문제는 이해했으나 코드가 머릿속에 그려지지 않아서 분류를 보고 재귀인 것을 보고 for문을 2개를 사용하여 함수를 만들었으나 재귀를 어떻게 해줘야 하는지 몰라서 못 풀었었습니다. 그래서 아래의 블로그의 해설을 보고 재귀를 하는 부분을 만들어주고 그 뒤로 0 부분과 1 부분을 어떻게 해줘야 하는지 몰라서 다시 찾아보고 이해가 되지 않아서 다시 머릿속으로 구조를 돌려봐야 했습니다. 해결은 했지만 너무 참고를 많이 했습니다. 그래서 나중에 다시 혼자서 풀어보기도 하고 비슷한 문제를 많이 풀 수 있도록 분류를 찾아서 해봐야겠습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 1780번 종이의 개수 (0) | 2022.01.18 |
---|---|
[백준/파이썬] 20687번 Rulltrappa (0) | 2022.01.18 |
[백준/파이썬] 23375번 Arm Coordination (0) | 2022.01.17 |
[프로그래머스/파이썬] 시저 암호 (0) | 2022.01.16 |
[백준/파이썬] 24087번 アイスクリーム (Ice Cream) (0) | 2022.01.16 |