*문제 출처는 프로그래머스에 있습니다.
문제 제목: 쿼드압축 후 개수 세기 (2단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/68936
문제 설명
나의 풀이
def solution(arr):
answer = [0, 0]
rows = len(arr)
def qu(x, y, n):
first = arr[x][y]
for i in range(x, x + n):
for j in range(y, y + n):
if first != arr[i][j]:
nrows = n // 2
qu(x, y, nrows)
qu(x + nrows, y, nrows)
qu(x, y + nrows, nrows)
qu(x + nrows, y + nrows, nrows)
return 0
answer[first] += 1
qu(0, 0, rows)
return answer
그림처럼 처음에 모두가 같은 숫자일 경우에서 점점 반으로 쪼개지면서 나가아가는 코드의 방식이다.
※ 알아야 할 것
if문 안에return 0을 붙이지 않으면 숫자가 다른 것을 인지했어도 계속 진행을 하면서 불필요한 쿼드압축의 수를 구하게 된다.
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-Python' 카테고리의 다른 글
Programmers / 마법의 엘리베이터 / Python (2) | 2024.09.12 |
---|---|
Programmers / 두 큐 합 같게 만들기 / Python (0) | 2024.07.09 |
Programmers / 줄 서는 방법 / Python (1) | 2024.07.03 |
Programmers / 기지국 설치 / Python (0) | 2024.06.28 |
Programmers / 2개 이하로 다른 비트 / Python (0) | 2024.06.27 |