본문 바로가기
Problem Solving/SWEA

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

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

문제

2차원 배열에 입력된 문자 중 입력된 데이터 만큼의 길이를 갖는 회문의 갯수를 구하는 문제

 

풀이방법

2차원 배열을 행과 열을 완전탐색하면서 입력된 갯수만큼의 문자열을 만들고 이 문자열이 회문일 경우를 찾는다.

 

소스코드

package samsung;

import java.util.*;

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

댓글