본문 바로가기
Problem Solving/SWEA

[SWEA] 1216. [S/W 문제해결 기본] 3일차 - 회문2

by 테리는당근을좋아해 2020. 2. 21.

문제

N X N 크기의 문자로 이루어진 2차원 배열이 주어질 때, 가로, 세로 방향의 회문 중 가장 긴 회문의 길이를 구하는 문제

 

 

풀이방법

완전 탐색으로 가로 새로 1 ~ n-1 크기의 회문을 모두 탐색하고 그 중 가장 큰 회문의 길이를 출력.

 

소스코드

package samsung;

import java.util.*;

public class s_1216 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		for(int t = 1; t <= 10; t++) {
			int tmp = sc.nextInt();
			int max = 1;
			char[][] a = new char[100][100];
			for(int i = 0; i < 100; i++) {
				String s = sc.next();
				for(int j = 0; j < 100; j++) {
					a[i][j] = s.charAt(j);
				}
			}
			
			for(int i = 0; i < 100; i++) {
				for(int j = 2; j <= 100; j++) {
					char[] c = new char[j];
					int flag = 0;
					
					for(int k = 0; k < 100 - j; k++) {
						for(int l = 0; l < j; l++) {
							c[l] = a[i][l + k];
						}
						
						for(int l = 0; l < j / 2; l++) {
							if(c[l] != c[j-l]) {
								flag = 1;
								break;
							}
						}
						if(flag == 0)
							max = Math.max(max, j);
						
					}
					
					
				}
			}
			System.out.println("#" + t + " " + max);
		}
	}
}

댓글