For Programmer
SWEA 1215 파이썬 문제풀이(회문) 본문
728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14QpAaAAwCFAYi
간단히 세로와 가로를 K개 뽑는 과정을 따로 구현해주면서 뽑은 K개가 회문인지 확인하는 식으로 구현했다.
# 회문 판별 함수
def palindrome_cheking(new_array):
global count
start = 0 # 시작 인덱스
end = K - 1 # 끝 인덱스
ispalindrome = True # 회문판별여부 변수
while start <= K // 2: # 뽑은 길이의 절반만큼 양쪽에서 안쪽으로 검사
if new_array[start] != new_array[end]: # 만약 같지 않다면
ispalindrome = False # 그 값을 False
break # 반복문 탈출
start += 1 # 앞에서오는 인덱스 + 1
end -= 1 # 뒤에서 오는 인덱스 - 1
if ispalindrome: # 만약 회문이라면
count += 1 # 총 개수 + 1
for order in range(1, 10 + 1):
K = int(input())
word = [list(map(str, input())) for _ in range(8)]
count = 0
# 가로 검사
for i in range(8):
for j in range(8):
new_array = []
if j + K > 8: # 만약 K를 뽑을 수 없다면
break # 반복문 탈출후 다음 행으로 넘어간다.
for h in range(j, j + K): # 가로로 K를 뽑는다.
new_array.append(word[i][h]) # 가로로 단어 k개를 넣어준다.
palindrome_cheking(new_array) # 회문 판별
# 세로 검사
for i in range(8):
if i + K > 8: # 만약 K를 뽑을 수 없다면
break # 반복문 탈출
for j in range(8):
new_array = []
for h in range(i, i + K): # 세로로 K개를 뽑는다.
new_array.append(word[h][j]) # 세로로 단어 K개를 넣어준다.
palindrome_cheking(new_array) # 회문판별
print(f'#{order} {count}')
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
SWEA 1267 파이썬 문제풀이(작업순서) (0) | 2022.02.11 |
---|---|
SWEA 1216 파이썬 문제풀이(회문2) (0) | 2022.02.10 |
SWEA 1221 파이썬 문제풀이(GNS) (0) | 2022.02.10 |
SWEA 6190 파이썬 문제풀이(정곤이의 단조 증가하는 수) (0) | 2022.02.10 |
SWEA 2805 파이썬 문제풀이(농작물 수확하기 ) (0) | 2022.02.10 |
Comments