SWEA 1215 회문1 D3 (자바 Java)

SWEA 1215 회문1

문제 정보

  • 문제 출처 : SW Expert Academy
  • 문제 번호 : 1215
  • 문제 제목 : 회문1
  • 문제 난이도 : D3
  • 풀이 언어 : Java

문제

8 x 8 크기의 글자판에서 주어진 길이의 회문 개수를 찾는 문제

접근

가로 방향과 세로 방향을 반복문으로 돌면서 회문을 찾고, 회문이 발되면 count를 증가시켜서 문제를 풀었다.

풀이

  • 각 테스트 케이스마다 회문의 길이 n과 8×8 크기의 문자 배열을 입력 받는다.
  • 가로 방향과 세로 방향에 대해 반복문을 돌면서 회문을 찾는다. 이 때, 중첩된 반복문을 사용하여 해당 구간의 문자가 회문인지 확인한다.
  • 회문을 찾으면 count를 증가시킨다.
  • 모든 테스트 케이스에 대해 회문의 총 개수를 출력한다.

후기

이 문제를 통해 2차원 배열과 반복문을 활용한 회문 찾기 방법을 익힐 수 있었습니다.

코드

Java
import java.util.Scanner;
import java.io.FileInputStream;
 
class Solution
{
    public static void main(String args[]) throws Exception
    {
        Scanner sc = new Scanner(System.in);
 
        for(int test_case = 1; test_case <= 10; test_case++)
        {
            int n = sc.nextInt(); // 회문의 길이
            char[][] board = new char[8][8]; // 8x8 보드
 
            // 2차원 배열에 문자 입력
            for (int i = 0; i < 8; i++) {
                String row = sc.next();
                for (int j = 0; j < 8; j++) {
                    board[i][j] = row.charAt(j);
                }
            }
 
            int count = 0;
 
            // 가로 방향
            for (int i = 0; i < 8; i++) {
                for (int j = 0; j <= 8 - n; j++) {
                    boolean isPalindrome = true;
                    for (int k = 0; k < n / 2; k++) {
                        if (board[i][j + k] != board[i][j + n - 1 - k]) {
                            isPalindrome = false;
                            break;
                        }
                    }
                    if (isPalindrome) count++;
                }
            }
 
            // 세로 방향
            for (int i = 0; i < 8; i++) {
                for (int j = 0; j <= 8 - n; j++) {
                    boolean isPalindrome = true;
                    for (int k = 0; k < n / 2; k++) {
                        if (board[j + k][i] != board[j + n - 1 - k][i]) {
                            isPalindrome = false;
                            break;
                        }
                    }
                    if (isPalindrome) count++;
                }
            }
            System.out.println("#" + test_case + " " + count);
        }
    }
}
Java

Leave a Comment