1215_회문1
2024. 8. 24. 23:24ㆍ알고리즘 풀이
# 제시되는 길이만큼의 문자가 회문인지를 판별한다.
# 결과는 회문의 개수이다.
def is_palindrome(word): # 회문 검사 함수.
if word == word[::-1]:
return True
return False
for case in range(1, 11):
n = int(input())
cnt = 0
arr = [list(map(str, input())) for _ in range(8)]
n_arr = [[] for _ in range(8)]
for x in range(8): # 회전한 arr 생성
for y in range(8):
n_arr[x].append(arr[y][x])
for i in range(8):
for j in range(8 - n + 1):
w = arr[i][j : j + n]
if is_palindrome(w):
cnt += 1
w = n_arr[i][j : j + n]
if is_palindrome(w):
cnt += 1
print(f"#{case} {cnt}")
# -----------------다른 풀이------------------------------
for t in range(2):
t = t + 1
k = int(input())
n_list = [list(input()) for _ in range(8)]
n_dict = {}
for y in range(8): # 회전한 문자열을 기록하는 문법
for x in range(8):
if x not in n_dict:
n_dict[x] = [n_list[y][x]]
else:
n_dict[x] += [n_list[y][x]]
cnt = 0
for y in range(8):
for x in range(8 - k + 1):
if n_list[y][x : x + k] == n_list[y][x : x + k][::-1]:
cnt += 1
if n_dict[y][x : x + k] == n_dict[y][x : x + k][::-1]:
cnt += 1
print("#" + str(t), cnt)'알고리즘 풀이' 카테고리의 다른 글
| [백준]4344_평균은넘겠지 (1) | 2024.08.24 |
|---|---|
| 1216_회문2 (1) | 2024.08.24 |
| 2005_파스칼의삼각형 (0) | 2024.08.24 |
| 2001_파리퇴치 (1) | 2024.08.24 |
| 1983_조교의 성적 매기기 (2) | 2024.08.24 |