import sys
#표준입력을 파일로 설정
sys.stdin = open("input.txt","r")
def list_odd(x):
global found_text
for line in x:
for index in range(len(line) - n + 1):
if line[index:index + share] == line[index + share: index + (share * 2)][::-1]:
found_text += 1
def list_even(x):
global found_text
for line in x:
for index in range(len(line) - n + 1):
if line[index:index + share] == line[index + share + 1: index + (share * 2) + 1][::-1]:
found_text += 1
T = 10
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
n = int(input())
list_text = []
found_text = 0
for i in range(8):
a = list(input())
list_text.append(a)
remain = n % 2
share = n // 2
# 짝수
if remain == 0:
# 가로
list_odd(list_text)
# 세로
list_text = list(map(list, zip(*list_text)))
list_odd(list_text)
# 홀수
else:
# 가로
list_even(list_text)
# 세로
list_text = list(map(list, zip(*list_text)))
list_even(list_text)
print(f"#{test_case} {found_text}")
문제 2
import sys
# 표준입력을 파일로 설정
sys.stdin = open("input.txt", "r")
def list_odd(list_num, share):
if list_num[: share] == list_num[share: share * 2][::-1]:
return 1
else:
return 0
def list_even(list_num, share):
if list_num[: share] == list_num[share + 1: (share * 2) + 1][::-1]:
return 1
else:
return 0
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
text = input()
text_len = len(text)
share_text = text_len // 2
remain_text = text_len % 2
list_text = list(text)
# 짝수
if remain_text == 0:
print(f"#{test_case} {list_odd(list_text, share_text)}")
# 홀수
else:
print(f"#{test_case} {list_even(list_text, share_text)}")
문제 3
import sys
# 표준입력을 파일로 설정
sys.stdin = open("input.txt", "r")
def mirror(text_list):
new_list = []
for i in text_list[::-1]:
if i == "b":
new_list.append("d")
elif i == "d":
new_list.append("b")
elif i == "q":
new_list.append("p")
elif i == "p":
new_list.append("q")
return new_list
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
text = input()
text_list = list(text)
ans = "".join(mirror(text_list))
print(f"#{test_case} {ans}")
문제 4
import sys
# 표준입력을 파일로 설정
sys.stdin = open("input.txt", "r")
def patton(text, length):
for i in range(length):
for j in range(1,length+1):
if text[i:j] == text[i+j:j*2]:
return text[i:j]
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
num = input()
num_length = len(num)
text = len(patton(num, num_length))
print(f"#{test_case} {text}")
문제 5
import sys
# 표준입력을 파일로 설정
sys.stdin = open("input.txt", "r")
def match_line(num, line):
global counter
for char in line:
block = 0
for index, x in enumerate(char, 1):
if x == 1:
block += 1
else:
if block == num:
counter += 1
block = 0
else:
block = 0
if index == len(char) and block == num:
counter += 1
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
counter = 0
n, k = map(int, input().split())
list_map = []
for i in range(n):
list_map.append(list(map(int, input().split())))
# 빈곳 검사
match_line(k, list_map)
# 행렬 변환
list_map = list(map(list, zip(*list_map)))
# 빈곳 검사
match_line(k, list_map)
print(f"#{test_case} {counter}")
문제 6
import sys
from itertools import combinations
# 표준 입력을 파일로 설정
sys.stdin = open("input.txt", "r")
def match_line(value, num_list):
global counter
remove_list = [x for x in num_list if x <= value]
for i in range(1, len(remove_list) + 1):
num = combinations(remove_list, i)
for j in num:
if sum(j) == value:
counter += 1
T = int(input())
# 여러 개의 테스트 케이스 가 주어 지므로, 각각을 처리 합니다.
for test_case in range(1, T + 1):
n, k = map(int, input().split())
list_map = []
numbers = list(map(int, input().split()))
counter = 0
match_line(k, numbers)
print(f"#{test_case} {counter}")
문제 7
import sys
# 표준입력을 파일로 설정
sys.stdin = open("input.txt", "r")
def power(n, m):
if m == 1:
return n
else:
n *= power(n, m - 1)
return n
T = 10
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
num = int(input())
n, m = map(int, input().split())
print(f"#{num} {power(n, m)}")
문제 8
import sys
# 표준 입력을 파일로 설정
sys.stdin = open("input.txt", "r")
T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
# 횟수 받기
num, cal = map(int, input().split())
# 맛잇는 통
t = []
# 칼로리 통
k = []
# 가능한 햄버거를 찾는 기계?
def dfs(i, taste, kcal):
# 최고 기록 가져 가기
global max_taste
# 맛있게 만든 버거 라도 칼로리가 높으면 out!
if kcal > cal: # 칼로리 초과
return
# 칼로리도 넘지 않고 재료도 한번 씩 썻다면 최고의 음식
if taste > max_taste: # 최대 칼로리 저장
max_taste = taste
# 재료의 갯수가 넘어 가도 out!
if i == num: # 끝
return
# 재료를 선택 할지 말지를 고르는 선택지
# i번 째에 있는 재료를 사용 한다! 그리고 그 만큼 맛과 칼로리도 챙겨가
dfs(i + 1, taste + t[i], kcal + k[i])
# 모든 재료로 비교를 다 해봐서 재료 수를 넘겨서 다른 방법을 찾거나 칼로리의 양이 넘어가 버려서 아웃 되어 버렸으니 패스 하는 것
dfs(i + 1, taste, kcal)
# 재료 갯수 만큼 칼로리랑 맛 기록하기
for _ in range(num):
tasty, cals = map(int, input().split())
t.append(tasty)
k.append(cals)
# 최고 기록을 만들자
max_taste = 0
# 이제 재료 들을 넣고 햄버거를 만들어 보자 먼저 아무 것도 안했을 때에 칼로리랑 맛부터
dfs(0, 0, 0)
# 출력!
print(f'#{test_case} {max_taste}')
# ----실패한 나의 작품----
# from itertools import combinations
# def low_cal(list_x, max_cals):
# pass_buggers = []
# for z in range(1, len(list_x) + 1):
# if z == 1:
# for m in list_x:
# if m[1] <= max_cals:
# pass_buggers.append(m)
# else:
# buggers = combinations(list_x, z)
# for j in buggers:
# sum_cal = [sublist[1] for sublist in j]
# if sum(sum_cal) <= max_cals:
# pass_buggers.append(j)
# return pass_buggers
#
#
# def max_tasty(list_bugger):
# max_taste = 0
# for x in list_bugger:
# sum_tasty = 0
# if isinstance(x, list):
# sum_tasty += x[0]
# else:
# for j in x:
# sum_tasty += j[0]
# if sum_tasty > max_taste:
# max_taste = sum_tasty
# return max_taste
#
#
# T = int(input())
# # 여러 개의 테스트 케이스 가 주어 지므로, 각각을 처리 합니다.
# for test_case in range(1, T + 1):
# num, max_cal = map(int, input().split())
# items = []
#
# for i in range(num):
# items.append(list(map(int, input().split())))
#
# eat_able_bugger = low_cal(items, max_cal)
# most_bugger = max_tasty(eat_able_bugger)
#
# print(f"#{test_case} {most_bugger}")