[java] SWEA - 회문2

세상을 바꾸는 개발자·2023년 5월 20일
0

[문제링크 - SWEA - 회문2] https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV14Rq5aABUCFAYi&categoryId=AV14Rq5aABUCFAYi&categoryType=CODE&problemTitle=&orderBy=INQUERY_COUNT&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=2

  • 회문의 길이를 1부터 100까지의 경우를 하나하나 확인하여 최대값을 구한다.
  • len=1 일 때 부터 시작하여 행에 따라 최대값을 구하고, 열에 따라 최대값을 구한다.
    - 1일 때는 시작할 수 있는 경우의 수가 100일 것이고, 20일 때는 80일 것이다.
    • 그 부분을 for(int j=0; j<100-len+1; j++) 이렇게 표시하였다.
  • 회문의 길이와 시작하는 위치가 정해졌으면, 시작위치부터 회문길이까지 진짜 회문이 맞는지 체크한다.
    - 대칭적이므로 회문길이의 반만 for문을 돌리면된다.
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//BufferedReader br = new BufferedReader(new FileReader("input1216.txt"));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st;
		boolean flag;
		
		for(int t=1; t<=10; t++) {
			int c = Integer.parseInt(br.readLine());
			
			String[][] map = new String[100][100];
			int max = Integer.MIN_VALUE;
			
			for(int i=0; i<100; i++) {
				map[i] = br.readLine().split("");
			}
			
			for(int len=1; len<=100; len++) {
				for(int i=0; i<100; i++) {
					for(int j=0; j<100-len+1; j++) {
						flag = true;
						for(int k=0; k<len/2; k++) {
							if(!map[i][j+k].equals(map[i][j-k+len-1])) {
								flag = false;
								break;
							}
						}
						if(flag) {
							max = Math.max(max, len);
						}
					}
				}
				
				for(int i=0; i<100; i++) {
					for(int j=0; j<100-len+1; j++) {
						flag = true;
						for(int k=0; k<len/2; k++) {
							if(!map[j+k][i].equals(map[j-k+len-1][i])) {
								flag = false;
								break;
							}
						}
						if(flag) {
							max = Math.max(max, len);						
						}
					}
				}
			}
			
			sb.append("#" + t + " " + max + "\n");
			
		}
		System.out.println(sb);
	}
}
profile
초심 잃지 않기

0개의 댓글

관련 채용 정보