BOJ 1780用紙数
質問する
BOJ 1780用紙数
シルバーII|白駿1780|Python 3 Python池
アルゴリズム#アルゴリズム#
BOJ 2630色紙を作る題によく似ています.(制作BOJ 260カラーペーパー-解答)カラーペーパー作成は4等分ですが、この問題は9等分です.
check([row[:c//3] for row in part[:c//3]], c//3)
check([row[:c//3] for row in part[c//3:c//3*2]], c//3)
check([row[:c//3] for row in part[c//3*2:]], c//3)
check([row[c//3:c//3*2] for row in part[:c//3]], c//3)
check([row[c//3:c//3*2] for row in part[c//3:c//3*2]], c//3)
check([row[c//3:c//3*2] for row in part[c//3*2:]], c//3)
check([row[c//3*2:] for row in part[:c//3]], c//3)
check([row[c//3*2:] for row in part[c//3:c//3*2]], c//3)
check([row[c//3*2:] for row in part[c//3*2:]], c//3)
2 D配列の場合は、上記のfor文を使用して行と列をそれぞれスムーズに処理します.コード#コード#
import sys
input = sys.stdin.readline
mone = 0 # -1 그룹 개수
zero = 0 # 0 그룹 개수
pone = 0 # +1 그룹 개수
# 해당 그룹의 특정 수의 개수를 카운트하는 함수
def count(part, c, x):
count = 0
for i in range(c):
for j in range(c):
if part[i][j] == x:
count += 1
return count
def check(part, c):
global pone, zero, mone
# 만약 블록이 1x1이라면 값에 따라 카운트 증가
if c == 1:
if part[0][0] == 1:
pone += 1
elif part[0][0] == 0:
zero += 1
else:
mone += 1
return
# 그 그룹의 칸이 전부 -1이라면
if count(part, c, -1) == c * c:
mone += 1
return
# 전부 0이라면
elif count(part, c, 0) == c * c:
zero += 1
return
# 전부 1이라면
elif count(part, c, 1) == c * c:
pone += 1
# 다른 값이 섞여 있다면 9개의 정사각형 그룹으로 분할해서 체크하기
else:
check([row[:c//3] for row in part[:c//3]], c//3)
check([row[:c//3] for row in part[c//3:c//3*2]], c//3)
check([row[:c//3] for row in part[c//3*2:]], c//3)
check([row[c//3:c//3*2] for row in part[:c//3]], c//3)
check([row[c//3:c//3*2] for row in part[c//3:c//3*2]], c//3)
check([row[c//3:c//3*2] for row in part[c//3*2:]], c//3)
check([row[c//3*2:] for row in part[:c//3]], c//3)
check([row[c//3*2:] for row in part[c//3:c//3*2]], c//3)
check([row[c//3*2:] for row in part[c//3*2:]], c//3)
N = int(input())
p = [list(map(int, input().split())) for _ in range(N)]
check(p, N)
# 각 값으로 이루어진 그룹의 개수 출력
print(mone)
print(zero)
print(pone)
結果
Python 3をコミットするとタイムアウトになります.Pypy 3でコミットする必要があります.
Reference
この問題について(BOJ 1780用紙数), 我々は、より多くの情報をここで見つけました https://velog.io/@leehe228/boj1780テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol