honey_pot
[Python] 쿼드압축 후 개수 세기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/68936
압축을 하는 quad 함수를 외부에 선언할 경우 answer를 global로 선언해서 quad 함수에서도 쓸 수 있게 해야하고 arr를 파라미터로 줘야한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
def solution(arr):
global answer
answer = [0,0] # 0의 개수, 1의 개수
quad(arr, answer, len(arr))
return answer
def quad(arr, s, n): x, y, target = s[0],s[1], arr[s[0]][s[1]]
for i in range(n):
for j in range(n):
if target != arr[x+i][y+j]:
n //= 2
quad(arr, [x,y],n)
quad(arr, [x,y+n], n)
quad(arr, [x+n,y], n)
quad(arr, [x+n,y+n], n)
return
answer[target] += 1
|
cs |
개인적으로 global을 잘 안 쓰다 보니 quad 함수를 내부에 선언할 경우가 더 편했다
근데 파이썬 알고리즘 인터뷰 책을 읽고 나니 내부함수명에 _를 안 붙이면 규칙에 어긋나는 거 같아서 신경쓰인다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
def solution(arr):
def quad(x,y,n):
target = arr[x][y]
for i in range(n):
for j in range(n):
if target != arr[x+i][y+j]:
n //= 2
quad(x,y,n)
quad(x+n,y,n)
quad(x,y+n,n)
quad(x+n,y+n,n)
return
answer[target] += 1
answer = [0,0]
n = len(arr)
quad(0,0,n)
return answer
|
cs |
'문제 풀이' 카테고리의 다른 글
[Python] 가장 큰 정사각형 찾기 (1) | 2022.09.21 |
---|---|
[Python] 줄 서는 방법 (1) | 2022.09.21 |
[Python] 2개 이하로 다른 비트 (1) | 2022.09.21 |
[Python] 양궁대회 (1) | 2022.09.20 |
[Python] 점프와 순간 이동 (0) | 2022.09.20 |
Comments