T = int(input())
for tc in range(1, T+1):
N = int(input())
co_plane = [[0] * 10 for _ in range(10)] # 평면좌표
color = []
cnt = 0 # 전체 좌표 에서 cnt 구해야 하니까 cnt 초기화는 여기서 !!
for i in range(N):
color.append(list(map(int, input().split())))
for j in range(color[i][0], color[i][2] + 1): # x 좌표
for k in range(color[i][1], color[i][3] + 1): # y 좌표
if color[i][4] == 1: # 빨강이면
co_plane[j][k] += 1
elif color[i][4] == 2: # 파랑이면
co_plane[j][k] += 10
if co_plane[j][k] % 11 == 0:
cnt += 1
print('#{} {}'.format(tc, cnt))
def bi_search(lst,key):
left = 0
right = len(lst)-1
cnt = 0
while left <= right:
middle = (left+right)//2
if lst[middle] == key:
break
elif key < lst[middle]: # if 말고 elif ! 아니라면 이어야 하니까
right = middle
cnt += 1
elif key > lst[middle]:
left = middle
cnt += 1
return cnt
T = int(input())
for tc in range(1, T+1):
P, Pa, Pb = map(int, input().split())
book = [0] * P
for i in range(0, P):
book[i] = i+1
if bi_search(book, Pa) < bi_search(book, Pb):
ans = 'A'
if bi_search(book, Pa) == bi_search(book, Pb):
ans = 0
if bi_search(book, Pa) > bi_search(book, Pb):
ans = 'B'
print('#{} {}'.format(tc, ans))
def get_sum(lst):
total = 0
for i in range(len(lst)):
total += lst[i]
return total
T = int(input())
A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
for tc in range(1, T+1):
N, K = map(int, input().split())
cnt = 0
for i in range(1 << len(A)):
arr = []
for j in range(len(A)):
if i & (1 << j):
subset = A[j]
arr.append(subset) # arr 은 부분집합
if len(arr) == N and get_sum(arr) == K: # 부분집합 중 N개의 원소 갖고 있고 합이 K 이면
cnt += 1
print('#{} {}'.format(tc, cnt))
비트연산 잘 기억하기!!
T = int(input())
for tc in range(1, T+1):
N = int(input())
lst = list(map(int, input().split()))
# 정렬
for i in range(len(lst)-1):
min_idx = i
for j in range(i+1, len(lst)):
if lst[j] < lst[min_idx]:
min_idx = j
tmp = lst[i]
lst[i] = lst[min_idx]
lst[min_idx] = tmp
ans = [0] * len(lst)
for i in range(len(lst)):
if i % 2: # 홀수 인덱스에 lst 인덱스 0, 1, 2 이순서로 온다.
ans[i] = lst[i//2]
elif i % 2 == 0: # 짝수 인덱스에는 list 인덱스의 len(lst)-1, len(lst)-2, len(lst)-3 이순서로 온다.
ans[i] = lst[len(lst)-(i//2+1)]
print('#{}'.format(tc), *ans[:10]) # 10개만 출력하라는 문제이므로.
T = int(input())
for tc in range(1, T + 1):
N, K = map(int, input().split())
puzzle = [[0] * (N+2)] + [[0] + list(map(int, input().split())) + [0] for _ in range(N)] + [[0] * (N+2)]# 인덱스 에러나는거 막기 위해 테두리 감싸기
# print(puzzle)
# 가로
cnt1 = 0
for i in range(1, N+1):
for j in range(1, N+1-K+1):
if puzzle[i][j:j+K] == [1] * K and puzzle[i][j-1] == 0 and puzzle[i][j+K] == 0:
cnt1 += 1
# 세로(얘는 리스트형식 아니니까 슬라이싱으로 못구함)
# 세로 이차원 리스트 새로 만들기..
sero = []
for j in range(N+2):
for i in range(N+2):
sero.append(puzzle[i][j])
# (N+2) * (N+2) 로 쪼개기
sero_lst = [sero[(N+2)*i:(N+2)*i+(N+2)] for i in range(N+2)]
cnt2 = 0
for i in range(N+2):
for j in range(N+2):
if sero_lst[i][j:j+K] == [1] * K and sero_lst[i][j-1] == 0 and sero_lst[i][j+K] == 0:
cnt2 += 1
print('#{} {}'.format(tc, cnt1+cnt2))
d2인데 오래걸려서 속상했다. 근데 지금보니까 왜저렇게 어렵게 풀었나 싶다.
def get_sum(lst):
total = 0
for i in range(len(lst)):
total += lst[i]
return total
T = int(input())
for tc in range(1, T+1):
N, M = map(int, input().split())
flies = [list(map(int, input().split())) for _ in range(N)]
ss = []
s = []
maxx = -987654321
for i in range(N-M+1):
for j in range(N-M+1):
for k in range(M):
for l in range(M):
s.append(flies[j+k][i+l]) # 쭉 나열 된 리스트
# print(s)
for i in range(len(s)//M):
ch_ = s[i+(M*M-1)*i:i+(M*M-1)*i+M*M] # M*M 개 씩 쪼개기
if maxx <get_sum(ch_):
maxx = get_sum(ch_)
print('#{} {}'.format(tc, maxx))
```