[SWEA]#1215次ゲート1
Link
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14QpAaAAwCFAYi&categoryId=AV14QpAaAAwCFAYi&categoryType=CODE
Code
import java.util.Scanner;
class Solution {
public static void main(String args[]) throws Exception {
Scanner sc = new Scanner(System.in);
for (int testCase = 1; testCase <= 10; testCase++) {
int n = sc.nextInt();
char arr[][] = new char[8][8];
for (int i = 0; i < 8; i++) {
String temp = sc.next();
arr[i] = temp.toCharArray();
}
int result = 0;
for (int i = 0; i < 8; i++) {
for (int j = 0; j <= 8 - n; j++) {
boolean row = true;
for (int k = 0; k < n / 2; k++) {
if (row && arr[i][j + k] != arr[i][j + n - 1 - k]) {
row = false;
}
}
if (row) {
result++;
}
}
}
for (int i = 0; i <= 8 - n; i++) {
for (int j = 0; j < 8; j++) {
boolean col = true;
for (int k = 0; k < n / 2; k++) {
if (col && arr[i + k][j] != arr[i + n - 1 - k][j]) {
col = false;
}
}
if (col) {
result++;
}
}
}
System.out.printf("#%d %d\n", testCase, result);
}
}
}
Solution
検索する文の長さnを使用して、水平を基準とし、垂直を基準として、3のfor文を2回繰り返します.
例えば、横方向
row
を基準とすると、比較arr[i][j]
から+k、arr[i][j + n - 1]
から-kの間で同じかどうか次にboolean値がtrueの場合、result値を増やして出力します.
Reference
この問題について([SWEA]#1215次ゲート1), 我々は、より多くの情報をここで見つけました https://velog.io/@kwonsc/SWEA-1215-회문1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol