Hikenny25
3일차 - 회문 본문
def is_palindrome(x):
original = x.copy()
t = len(x) // 2
for i in range(t):
x[i], x[len(x)-1-i] = x[len(x)-1-i], x[i]
if original == x:
return True
else:
return False
t = int(input())
ans = list()
for _ in range(t):
n, m = map(int, input().split())
word = [list(input()) for _ in range(n)]
# 행 회문 계산
tmp = 0
for i in range(n):
for j in range(n-m+1):
var = list()
for k in range(m):
var.append(word[i][j+k])
if is_palindrome(var):
tmp = 1
ans.append(''.join(var))
break
if tmp == 1:
break
# 열 회문 계산
if tmp == 0:
for i in range(n):
for j in range(n-m+1):
var = list()
for k in range(m):
var.append(word[j+k][i])
if is_palindrome(var):
tmp = 1
ans.append(''.join(var))
break
if tmp == 1:
break
for i in range(t):
print(f"#{i+1} {ans[i]}")
회문 판단 함수 만들고 반복문 써서 그냥 구현했다
하고보니 너무 길어서 transpose matrix 구해서 반복문을 한 번 더 돌리는 방식으로 하니 코드 길이는 확실히 줄어들엇따
def is_palindrome(x):
original = x.copy()
t = len(x) // 2
for i in range(t):
x[i], x[len(x)-1-i] = x[len(x)-1-i], x[i]
if original == x:
return True
else:
return False
t = int(input())
ans = list()
for _ in range(t):
n, m = map(int, input().split())
word = [list(input()) for _ in range(n)]
tmp = 0
for _ in range(2):
for i in range(n):
for j in range(n-m+1):
var = list()
for k in range(m):
var.append(word[i][j+k])
if is_palindrome(var):
tmp = 1
ans.append(''.join(var))
break
if tmp == 1:
break
if tmp == 1:
break
else:
word = list(zip(*word))
for i in range(t):
print(f"#{i+1} {ans[i]}")
transpose matrix 구하는 방법이 numpy 라이브러리를 쓰는 방법하고 list(zip(*matrix_name))으로 구하는 방법이 있던데 나중에 쓸 일이 생기면 내장 함수인 zip으로 구현해서 쓸 것 같아서 zip으로 구하는 방법을 택했다..! 나중에 쓸 일이 있으면 종종 사용할 예정
'SW Expert Academy > Programming - Intermediate' 카테고리의 다른 글
4일차 - 종이붙이기 (0) | 2023.12.09 |
---|---|
3일차 - 글자수 (0) | 2023.12.09 |
3일차 - 문자열 비교 (0) | 2023.12.09 |
2일차 - 특별한 정렬 (0) | 2023.12.09 |
2일차 - 이진탐색 (0) | 2023.12.09 |
Comments