문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 풀이 (함수사용)
- 회문을 탐색하는 함수를 만들어 가로 회문을 탐색한다.
- 행기준으로 문자리스트를 다시 생성하여 회문 탐색한다.
- 가로와 세로 기준 회문 개수 더해서 형식에 맞게 출력한다.
코드
# 가로 회문찾기
def find_width_palindrome(word_list):
cnt = 0
for i in range(8):
for j in range(8 - word_len + 1):
word = word_list[i][j:j+word_len]
if word == word[::-1]:
cnt += 1
return cnt
for tc in range(10):
word_len = int(input())
word_list = [list(input()) for _ in range(8)]
width_palindrome = find_width_palindrome(word_list)
# 행기준으로 문자 탐색해서 문자리스트 다시 생성
height_word_list = []
for i in range(8):
word = ''
for j in range(8):
word += word_list[j][i]
height_word_list.append(word)
height_palindrome = find_width_palindrome(height_word_list)
print(f'#{tc + 1}',height_palindrome + width_palindrome)
문제 풀이 (함수사용 X)
- 문제에서 설명한 대로 가로일 때 길이가 n인 경우의 모든 문자를 탐색하면서, 그 문자를 뒤집었을 때도 같다면 카운트 해 준다.
- 세로로 문자를 탐색할 때는 for문을 하나 더 돌려서, 행의 값을 탐색하여 리스트에 붙인 후, 그 문자 리스트가 뒤집었을 때도 같은지 확인하여 같다면 카운트 해 준다.
- 카운트 한 값을 형식에 맞게 출력한다.
코드
for tc in range(10):
n = int(input())
array = [list(input()) for _ in range(8)]
cnt = 0
# 가로일 때 회문 구하기
for i in range(8):
for j in range(8 - n + 1):
width_word = array[i][j:j+n]
if width_word == list(reversed(width_word)):
cnt += 1
# 세로일 때 회문 구하기
for i in range(8):
for j in range(8 - n + 1):
height_word = []
for hw in range(j, j + n):
height_word.append(array[hw][i])
if height_word == list(reversed(height_word)):
cnt += 1
print(f'#{tc + 1}',cnt)'Algorithm > Simulation' 카테고리의 다른 글
| [Python] SWEA 1228,1230번 암호문1, 암호문3 (0) | 2023.05.16 |
|---|---|
| [Python] SWEA 1216번 회문2 (0) | 2023.05.15 |
| [Python] SWEA 2805번 농작물 수확하기 (0) | 2023.05.11 |
| [Python] SWEA 1873번 상호의 배틀필드 (0) | 2023.05.10 |
| [Python] SWEA 1240번 단순 2진 암호코드 (0) | 2023.05.09 |