SWEA 1215. [S/W 문제해결 기본] 3일차 - 회문1
문제 링크
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14QpAaAAwCFAYi
C++ 풀이
#include <iostream>
using namespace std;
int main() {
for (int tc = 1; tc <= 10; ++tc) {
char board[8][8];
int size, count = 0;
cin >> size;
bool isEven = size % 2 == 0;
for (int i = 0; i < 8; ++i) {
for (int j = 0; j < 8; ++j)
cin >> board[i][j];
}
string a, b;
for (int i = 0; i < 8; ++i) {
for (int j = 0; j < 8; ++j) {
//세로 탐색
if (i <= 8 - size) {
a = "", b = "";
for (int k = i; k < i + size / 2; ++k)
a += board[k][j];
//회문 길이가 짝수인 경우
if (isEven) {
for (int k = i + size - 1; k >= i + size / 2; --k)
b += board[k][j];
}
//회문 길이가 홀수인 경우
else {
for (int k = i + size - 1; k > i + size / 2; --k)
b += board[k][j];
}
if (a == b)
count++;
}
//가로 탐색
if (j <= 8 - size) {
a = "", b = "";
for (int k = j; k < j + size / 2; ++k)
a += board[i][k];
//회문 길이가 짝수인 경우
if (isEven) {
for (int k = j + size - 1; k >= j + size / 2; --k)
b += board[i][k];
}
//회문 길이가 홀수인 경우
else {
for (int k = j + size - 1; k > j + size / 2; --k)
b += board[i][k];
}
if (a == b)
count++;
}
}
}
cout << "#" << tc << " " << count << endl;
}
return 0;
}
왼쪽 위부터 오른쪽 아래 방향으로 차례대로 회문이 존재하는지 탐색하였다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[SWEA 1249] 보급로 (0) | 2021.10.27 |
---|---|
[SWEA 1230] 암호문3 (0) | 2021.10.27 |
[SWEA 1221] GNS (0) | 2021.10.21 |
[SWEA 1213] String (0) | 2021.10.20 |
[SWEA 1245] 균형점 (0) | 2021.10.20 |