SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
대학교 1학년 때 한창 애먹었던 회문(palindrome) 문제다.
글자판 크기는 8 X 8로 고정이고, 매 테스트 케이스마다 찾아야하는 회문의 길이가 주어진다.
8 X 8 글자판을 순회하되, 안쪽 반복문은 8에서 찾아야하는 회문의 길이를 빼준만큼만 순회했다.
마지막으로 회문인지 검사하는 반복문은 회문의 길이 절반만큼만 순회하며 양끝에서 가운데로 가도록 검사했다.
위쪽이 가로로 회문을 찾는 반복문, 아래쪽이 세로로 회문을 찾는 반복문이다.
코드
#include <iostream>
char board[8][8];
int find_palindrome(int len) {
int ans = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8 - len + 1; j++) {
bool found = true;
for (int k = 0; k < len / 2; k++) {
if (board[i][j + k] != board[i][j + (len - 1) - k]) {
found = false;
break;
}
}
if (found) {
ans++;
}
found = true;
for (int k = 0; k < len / 2; k++) {
if (board[j + k][i] != board[j + (len - 1) - k][i]) {
found = false;
break;
}
}
if (found) {
ans++;
}
}
}
return ans;
}
int main() {
for (int tc = 1; tc < 11; tc++) {
int len = 0;
std::cin >> len;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++) {
std::cin >> board[i][j];
}
}
std::cout << "#" << tc << " " << find_palindrome(len) << "\n";
}
return 0;
}
'PS > SWEA' 카테고리의 다른 글
SWEA 1206 : [S/W 문제해결 기본] 1일차 - View [C++] (0) | 2022.11.17 |
---|---|
SWEA 1926 : 간단한 369게임 (0) | 2022.11.17 |
SWEA 1954 : 달팽이 숫자 [C++] (0) | 2022.11.17 |
SWEA 1204 : [S/W 문제해결 기본] 1일차 - 최빈수 구하기 [C++] (0) | 2022.11.17 |
SWEA 1859 : 백만 장자 프로젝트 [C++] (0) | 2022.11.16 |