728x90
https://www.acmicpc.net/problem/2630
2630번: 색종이 만들기
첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.
www.acmicpc.net
1. 코드 설명
사각형 안에 숫자가 1로 나오는 정사각형 개수 찾는 문제 같다.
2. 예
입력에는 변의 개수 이후에 사각형 내부가 입력되고
출력으로는 하얀색 색종이의 개수, 파란색 색종이의 개수가 각각 한줄에 출력된다.
3. 코드
import sys
input = sys.stdin.readline
N = int(input())
paper = [list(map(int, input().split())) for _ in range(N)]
result = []
def make(x, y, N) :
color = paper[x][y]
for i in range(x, x+N) :
for j in range(y, y+N) :
if color != paper[i][j] :
make(x, y, N//2)
make(x, y+N//2, N//2)
make(x+N//2, y, N//2)
make(x+N//2, y+N//2, N//2)
return
if color == 0:
result.append(0)
else:
result.append(1)
make(0,0,N)
print(result.count(0))
print(result.count(1))
첫 위치와 같은지 확인하고 다르다면 변을 반절로 각각 나눈 사각형을 조사하는 방식이다
재귀로 아니라면 그 안에 검사 맞다면 하얀 사각형인지, 파란 사각형인지 result에 넣어 0의 개수와 1의 개수를 각각 출력한다.
728x90
'Programming > python' 카테고리의 다른 글
백준 6549 : 히스토그램에서 가장 큰 직사각형 [파이썬] (0) | 2023.02.06 |
---|---|
백준 11401 : 이항 계수 3 [파이썬] (0) | 2023.02.03 |
백준 11729 : 하노이 탑 이동 순서 (0) | 2023.01.17 |
백준 24060 : 알고리즘 수업 - 병행정렬 [파이썬] (0) | 2023.01.16 |
백준 4948 : 베르트랑 공준 [파이썬] (0) | 2023.01.11 |