//white: 0, black: 1 #define SIZE 64 #include using namespace std; int dat; int cnt; int map[SIZE][SIZE]; // change - true, not change - false bool check(int x1, int y1, int x2, int y2) { dat = map[x1][y1]; for (int i = x1; i < x2; i++) { for (int j = y1; j < y2; j++) { if (dat != map[i][j]) return true; } } return false; } int dc(int size, int x, int y) { if (size == 1) return 2; if (!check(x, ..
처음 고민했던 사고과정과 이후 정답풀이를 같이 정리해 놓았다. 1. 문제 https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 2. 풀이 시행 착오 회문의 특징을 살펴본 결과 좌우대칭이었다. 이를 고려해서 생각해보았다. 1) 문자열의 길이가 홀수일 경우 가운데를 제외한 모든 문자는 왼쪽에 존재한다면 오른쪽에도 반드시 존재해야 하므로 가운데를 제외한 문자의 수는 짝수개이다. 2) 문자열의 길이가 짝수일 경우 좌우대칭이므로 모든 문자의 수가 짝수개이다. 하지만 이렇게 경우를 하나하나..