백준(18808) - 스티커 붙이기 Python
백준(18808) - 스티커 붙이기
문제풀이: 구현, 시뮬레이션, 파이썬
이 문제는 문제에 주어진 대로 하나씩 구현해나가는 문제이다.
단순히 문제에서 하라는 대로만하면 풀 수 있는데, 어렵진 않지만 푸는데 시간이 생각보다 오래걸렸다…
import sys
input = sys.stdin.readline
def checking(temp, sticker):
for sy in range(len(sticker)):
for sx in range(len(sticker[0])):
if temp[i+sy][j+sx] + sticker[sy][sx] > 1:
return False
return True
def attach(temp, sticker):
for sy in range(len(sticker)):
for sx in range(len(sticker[0])):
temp[i+sy][j+sx] += sticker[sy][sx]
return
def rotate_90(arr):
n = len(arr)
m = len(arr[0])
result = [[0]*n for _ in range(m)]
for i in range(n):
for j in range(m):
result[j][n-i-1] = arr[i][j]
return result
Y, X, k = map(int, input().split())
notebook = [[0] * X for _ in range(Y)]
for _ in range(k):
y, x = map(int, input().split())
sticker = [list(map(int, input().split())) for _ in range(y)]
chk = False
cnt = 0
while cnt < 4:
if chk == True:
break
for i in range(Y - len(sticker) + 1):
if chk == True:
break
for j in range(X - len(sticker[0]) + 1):
if checking(notebook, sticker):
attach(notebook, sticker)
chk = True
break
sticker = rotate_90(sticker)
cnt += 1
answer = 0
for i in range(Y):
for j in range(X):
answer += notebook[i][j]
print(answer)
댓글남기기