문제 접근
길이가 N인 문자라면 N까지 다 탐색할 필요없이 N/2까지 탐색하면서 대칭되는 인덱스랑 비교하면 된다.
N/2까지 탐색하면서 다 같다면 횟수를 1증가
N이 홀수일 때도 마찬가지다 ABCBA면 N/2는 정수로 바뀌어서 2.5 → 2가 되고 C의 양 옆만 대칭으로 비교해서 같다면 팰린드롬이 완성되는 것
import java.util.*;
import java.io.*;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for(int t=1; t<=10; t++) {
int N = Integer.parseInt(br.readLine());
char[][] arr = new char[8][8];
for(int i=0; i<8; i++) {
st = new StringTokenizer(br.readLine());
String str = st.nextToken();
for(int j=0; j<8; j++) {
arr[i][j] = str.charAt(j);
}
}
int result = 0;
for(int i=0; i<8; i++) {
for(int j=0; j<=8-N; j++) {
int count = 0;
for(int n=0; n<N/2; n++) {
if(arr[i][j+n] != arr[i][j+N-1-n]) break;
else if(arr[i][j+n] == arr[i][j+N-1-n]) count++;
}
if(count == N/2) result++;
}
}
for(int i=0; i<8; i++) {
for(int j=0; j<=8-N; j++) {
int count = 0;
for(int n=0; n<N/2; n++) {
if(arr[j+n][i] != arr[j+N-1-n][i]) break;
else if(arr[j+n][i] == arr[j+N-1-n][i]) count++;
}
if(count == N/2) result++;
}
}
System.out.println("#"+t+" " + result);
}
}
}
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA / 햄버거 다이어트 / JAVA] (0) | 2023.05.20 |
---|---|
[SWEA / Sum / JAVA] (0) | 2023.05.19 |
[SWEA / 원재의 메모리 복구하기 / JAVA] (0) | 2023.05.17 |
[SWEA / 농작물 수확하기 / JAVA] (0) | 2023.05.17 |
[SWEA / N-Queen / JAVA] (0) | 2023.05.16 |
댓글