SWEA 1215 회문1 (Java, Python)

sua_ahn·2023년 1월 13일
0

알고리즘 문제풀이

목록 보기
5/14
post-thumbnail

2차원 배열 저장 후 3중첩 for문 검사

  • Java
import java.util.Scanner;
 
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();	// 회문의 길이
            int count = 0;      	// 회문의 개수
            char[][] board = new char[8][8];    // 글자판
            for(int i = 0; i < 8; i++) {     	// 입력받기
                board[i] = sc.next().toCharArray();
            }
            for(int l = 0; l < 8; l++) {
                for(int k = 0; k <= 8 - n; k++) {
                    boolean[] palindrome = {true, true};
                     
                    for(int h = 0; h < n/2; h++) {
                        if(board[l][k+h] != board[l][k-h+n-1]) {    // 가로 검사
                            palindrome[0] = false;
                            break;
                        }
                    }
                    for(int h = 0; h < n/2; h++) {
                        if(board[k+h][l] != board[k-h+n-1][l]) {    // 세로 검사
                            palindrome[1] = false;
                            break;
                        }
                    } // end for h
                    if(palindrome[0]) count++;
                    if(palindrome[1]) count++;
                } // end for k
            } // end for l
            System.out.println("#" + test_case + " " + count);
        }
    }
}
  • Python
for test_case in range(1, 10 + 1):
    n = int(input())		# 회문의 길이
    board = [0] * 8
    for i in range(8):
        board[i] = list(input())	# 글자판 입력받기
        
    count = 0
    for l in range(8):
        for k in range(9-n):
            palindrome = [True, True]
            for h in range(n//2):
                if board[l][k+h] != board[l][k-h+n-1]:	# 가로 검사
                    palindrome[0] = False
                    break
            for h in range(n//2):
                if board[k+h][l] != board[k-h+n-1][l]:	# 세로 검사
                    palindrome[1] = False
                    break
            if palindrome[0]:
                count += 1
            if palindrome[1]:
                count += 1
    
    print("#", test_case, " ", count, sep="")
profile
해보자구

0개의 댓글