본문 바로가기
알고리즘/SWEA

[SWEA / 회문1 / JAVA]

by KDW999 2023. 5. 18.

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=10&pageIndex=1 

 

SW Expert Academy

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

swexpertacademy.com

 

문제 접근

길이가 N인 문자라면 N까지 다 탐색할 필요없이  N/2까지 탐색하면서 대칭되는 인덱스랑 비교하면 된다.

N/2까지 탐색하면서 다 같다면 횟수를 1증가

 

N이 홀수일 때도 마찬가지다 ABCBA면 N/2는 정수로 바뀌어서 2.5 → 2가 되고 C의 양 옆만 대칭으로 비교해서 같다면 팰린드롬이 완성되는 것

import java.util.*;
import java.io.*;

public class Solution {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		for(int t=1; t<=10; t++) {
			
			int N = Integer.parseInt(br.readLine());
			
			char[][] arr = new char[8][8];
			
			for(int i=0; i<8; i++) {
				st = new StringTokenizer(br.readLine());
				String str = st.nextToken();
				
				for(int j=0; j<8; j++) {
				    arr[i][j] = str.charAt(j);
				}
			}
			
			int result = 0;
			
			for(int i=0; i<8; i++) {
				for(int j=0; j<=8-N; j++) {
					int count = 0;
					for(int n=0; n<N/2; n++) {
						if(arr[i][j+n] != arr[i][j+N-1-n]) break;
						else if(arr[i][j+n] == arr[i][j+N-1-n]) count++;
					}
					if(count == N/2) result++;
				}
			}
			
			for(int i=0; i<8; i++) {
				for(int j=0; j<=8-N; j++) {
					int count = 0;
					for(int n=0; n<N/2; n++) {
						if(arr[j+n][i] != arr[j+N-1-n][i]) break;
						else if(arr[j+n][i] == arr[j+N-1-n][i]) count++;
					}
					if(count == N/2) result++;
				}
			}
			System.out.println("#"+t+" " + result);
		}
	}
}

'알고리즘 > SWEA' 카테고리의 다른 글

[SWEA / 햄버거 다이어트 / JAVA]  (0) 2023.05.20
[SWEA / Sum / JAVA]  (0) 2023.05.19
[SWEA / 원재의 메모리 복구하기 / JAVA]  (0) 2023.05.17
[SWEA / 농작물 수확하기 / JAVA]  (0) 2023.05.17
[SWEA / N-Queen / JAVA]  (0) 2023.05.16

댓글