[파이썬] 백준 2630 : 색종이 만들기 (실버2)
2630번: 색종이 만들기
첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.
www.acmicpc.net
문제
풀이
0.방향성 생각
규칙 찾아주고 첫 번째 케이스만 하드코딩 한 후에 재귀호출해서 풀어주면 된다.
주어진 어레이를 가로 세로 2등분 총 4등분해서 기준점에서 재귀호출을 한다.
1. 전체 코드
import sys
input = sys.stdin.readline
n = int(input())
arr = []
w,b = 0,0
for i in range(n):
arr.append(list(map(int,input().split())))
def solution(x,y,N) :
global w,b
color = arr[y][x]
d = N//2
for i in range(y,y+N) :
for j in range(x,x+N) :
if color != arr[i][j] :
solution(x,y,d)
solution(x+d,y,d)
solution(x,y+d,d)
solution(x+d,y+d,d)
return
if color :
b += 1
else :
w += 1
solution(0,0,n)
print(w,b,sep='\n')
input = sys.stdin.readline() 이렇게 써놔서 한참 삽질해버림
'Algorithm > etc' 카테고리의 다른 글
[파이썬] 백준 1074 : Z (실버1) (0) | 2023.06.05 |
---|---|
[파이썬] 백준 1992 : 쿼드트리 (실버1) (0) | 2023.06.05 |
[파이썬] 백준 1780 : 종이의 개수 (실버2) (0) | 2023.06.05 |
[파이썬] 백준 1002 : 터렛 (실버3) (0) | 2023.05.30 |
[파이썬] 백준 3273 : 두 수의 합 (실버3) (0) | 2023.05.27 |
[파이썬] 백준 10819 : 차이를 최대로 (실버) (0) | 2023.05.26 |
[파이썬] 백준 2559 : 수열 (실버3) (0) | 2023.05.24 |
댓글