최근 글 ✨

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

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV14QpAaAAwCFAYi&categoryId=AV14QpAaAAwCFAYi&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=ALL&select-1=3&pageSize=30&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

[코드]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

import javax.sound.midi.Soundbank;

public class CodingTest {
	static char[][] map;
	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++) {
			int len = sc.nextInt(); // 회문 길이
			count = 0;
			map = new char[8][8];
			for (int i = 0; i < 8; i++) {
				String line = sc.next();
				for (int j = 0; j < 8; j++) {
					map[i][j] = line.charAt(j);
				}
			}

			StringBuffer sb = new StringBuffer();
			// 행 확인
			for (int i = 0; i < 8; i++) {
				sb = new StringBuffer();
				for (int j = 0; j < 8; j++) {
					sb.append(map[i][j]);
					if (sb.length() > len) { // 찾는 길이보다 길면 -1
						sb.delete(0, 1);
					}
					if (sb.length() == len && check(sb)) {
						count++;
					}
				}
			}

			for (int i = 0; i < 8; i++) {
				sb = new StringBuffer();
				for (int j = 0; j < 8; j++) {
					sb.append(map[j][i]);
					if(sb.length() > len) {
						sb.delete(0,1);
					}
					if(sb.length() == len&&check(sb)) {
						count++;
					}
				}
			}
			System.out.println("#" + test_case + " " + count);
		}
	}

	public static boolean check(StringBuffer sb) {
		for (int i = 0; i < sb.length() / 2; i++) {
			if (sb.charAt(i) != sb.charAt(sb.length() - i - 1)) {
				return false;
			}
		}
		return true;
	}
}