Python으로 구현한 68936번 쿼드압축 후 개수 세기 문제 풀이입니다.
https://programmers.co.kr/learn/courses/30/lessons/68936
def solution(arr) :
answer = [0, 0]
len_value = len(arr)
def func(x, y, len_v) :
temp = arr[x][y]
for i in range(x, x + len_v) :
for j in range(y, y + len_v) :
if arr[i][j] != temp :
temp_len_v = len_v // 2
func(x, y, temp_len_v)
func(x, y + temp_len_v, temp_len_v)
func(x + temp_len_v, y, temp_len_v)
func(x + temp_len_v, y + temp_len_v, temp_len_v)
return
answer[temp] += 1
func(0, 0, len_value)
return answer
1. len_value에 arr리스트의 크기를 할당하고, func() 함수를 호출하여 작업을 수행한 후 answer 리스트를 반환한다.
2. func() 함수의 작업은 아래와 같다.
- 전달받은 좌표(x, y)를 temp에 담아 확인하고 있는 값(arr[i][j])이 temp와 다를 경우 4칸으로 나눠 func() 함수를 재귀 호출한다.
- 이러한 방식으로 크기가 1까지 도달하면 1씩 더해주도록 한다.
'프로그래머스(Python) 풀이 > Level.2' 카테고리의 다른 글
프로그래머스(Python) 86971번 전력망을 둘로 나누기 풀이 (0) | 2022.05.11 |
---|---|
프로그래머스(Python) 84512번 모음 사전 풀이 (0) | 2022.05.11 |
프로그래머스(Python) 70129번 이진 변환 반복하기 풀이 (0) | 2022.05.11 |
프로그래머스(Python) 92335번 k진수에서 소수 개수 구하기 풀이 (0) | 2022.05.10 |
프로그래머스(Python) 92341번 주차 요금 계산 풀이 (2) | 2022.05.10 |