문제.

풀이.
입력을 받고 가로와 세로를 나누어서 확인한다. 어렵지는 않지만 자리계산이 헷갈리기 때문에 실수에 유의해야 한다.
코드.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class App {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[][] puzzle = new char[8][8]; // 문자열들을 받아서 넣을 8*8 배열
int count = 0; // 회문이 나올때 카운트할 변수
boolean flag = false; // 회문인지 아닌지 확인할 플래그
for(int TC=1;TC<=10;TC++){
count = 0;
// 찾을 회문 길이 입력받기
int N = Integer.parseInt(br.readLine());
//입력받기
for(int i=0;i<8;i++){
String str = br.readLine();
for(int j=0;j<8;j++){
puzzle[i][j] = str.charAt(j);
}
}
// 가로 확인하기
for(int i=0;i<8;i++){
for(int j=0;j<puzzle.length-N+1;j++){
flag = true;
for(int k=0;k<N/2;k++){
if(puzzle[i][j+k] != puzzle[i][j-k+N-1]){
flag = false;
}
}
if(flag==true){
count++;
}
}
}
// 세로 확인하기
for(int i=0;i<puzzle.length-N+1;i++){
for(int j=0;j<8;j++){
flag = true;
for(int k=0;k<N/2;k++){
if(puzzle[i+k][j] != puzzle[i-k+N-1][j]){
flag = false;
}
}
if(flag==true){
count++;
}
}
}
System.out.printf("#%d %d\n", TC, count);
}
}
}
결과.

소감.
3차까지 갈 문제가 아니었는데 생각을 잘못해서 런타임 오류와 코드 오류가 발생했다. 이런 일이 생기지 않게 더 조심조심 풀어야겠다.
'코딩테스트' 카테고리의 다른 글
| SWEA 1217 : 거듭제곱 (0) | 2024.03.11 |
|---|---|
| SWEA 1216 : 회문2 (0) | 2024.03.05 |
| SWEA 1213 : String (0) | 2024.03.05 |
| SWEA 2005 : 파스칼의 삼각형 (0) | 2024.02.23 |
| SWEA 2072 : 간단한 369게임 (0) | 2024.02.22 |