본문 바로가기
코딩테스트/SWEA

[JAVA] SWEA 1215번 회문1

by PEKAH 2021. 7. 30.

문제

"기러기" 또는 "level" 과 같이 거꾸로 읽어도 앞에서부터 읽은 것과 같은 문장이나 낱말을 회문(回文, palindrome)이라 한다.


주어진 8x8 평면 글자판에서 가로, 세로를 모두 보아 제시된 길이를 가진 회문의 총 개수를 구하는 문제이다.


위와 같은 글자판이 주어졌을 때, 길이가 5인 회문은 붉은색 테두리로 표시된 4개가 있으며 따라서 4를 반환하면 된다.

제약 사항

각 칸의 들어가는 글자는 c언어 char type으로 주어지며 'A', 'B', 'C' 중 하나이다.


글자 판은 무조건 정사각형으로 주어진다.


ABA도 회문이며, ABBA도 회문이다. A또한 길이 1짜리 회문이다.


가로, 세로 각각에 대해서 직선으로만 판단한다.


즉, 아래 예에서 노란색 경로를 따라가면 길이 7짜리 회문이 되지만 직선이 아니기 때문에 인정되지 않는다.

 

입력

각 테스트 케이스의 첫 번째 줄에는 찾아야 하는 회문의 길이가 주어지며, 다음 줄에 테스트 케이스가 주어진다.


총 10개의 테스트 케이스가 주어진다.

출력

#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 찾은 회문의 개수를 출력한다.

풀이

첫째줄부터 행과 열에 따라 검사를 실시한다.

 

길이에 따라 첫번째 칸부터 길이만큼의 칸을 비교한다.

 

check 플래그를 이용해 회문인 경우와 회문이 아닌 경우를 나누고, count를 증가시킨다

 

import java.util.Scanner;

public class 회문1 {
	
	static int tc;
	static char[][] palindromes = new char[8][8];
	static int count;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		for (int test_case = 1; test_case <= 10; test_case++) {
			tc = sc.nextInt();
			count = 0;
			
			for (int i = 0; i < 8; i++) {
				String str = sc.next();
				for (int j = 0; j < 8; j++) {
					palindromes[i][j] = str.charAt(j);
				}
			}
			
			for (int i = 0; i < palindromes.length; i++) {
				for (int j = 0; j <= palindromes.length - tc; j++) {
					boolean check = true;
					for (int k = 0; k < tc/2; k++) {
						if (palindromes[i][j+k] != palindromes[i][j+tc-k-1]) {
							check = false;
						}
					}
					if (check) count++;
				}
			}
			
			for (int i = 0; i <= palindromes.length - tc; i++) {
				for (int j = 0; j < palindromes.length; j++) {
					boolean check = true;
					for (int k = 0; k < tc/2; k++) {
						if (palindromes[i+k][j] != palindromes[i+tc-k-1][j]) {
							check = false;
						}
					}
					if (check) count++;
				}
			}
			
			System.out.println("#" + test_case + " " + count);
		}
	}
}

 

 

 

'코딩테스트 > SWEA' 카테고리의 다른 글

[JAVA] SWEA 1217번 거듭 제곱  (0) 2021.07.30
[JAVA] SWEA 1216번 회문2  (0) 2021.07.30
[JAVA] SWEA 1213번 String  (0) 2021.07.30
[JAVA] SWEA 1210번 Ladder1  (0) 2021.07.27
[JAVA] SWEA 1220번 Magnetic  (0) 2021.07.27

댓글