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

[SWEA / 문자열문자열 / JAVA]

by KDW999 2023. 7. 16.

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

 

SW Expert Academy

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

swexpertacademy.com

 

문제 접근

문자열을 반으로 잘라서 자른 두 문자열이 같아야 된다로  이해했다.

해당 문자열을 char 배열로 생성

그리고 문자열 길이가 홀수면 두 문자열이 같을 수 없으니 홀수면 바로 No 출력

 

짝수일 경우 자른 두 문자열의 첫 문자부터 비교해 나간다.

전체 문자열 길이의 반을 이용하면 두 문자열의 문자들을 비교해 나갈 수 있다.

 

비교하면서 같지 않으면 No

같다면 cnt로 횟수 세면서 문자열 길이의 반과 같아지면 Yes 출력

// SWEA

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));
    	
    	int T = Integer.parseInt(br.readLine());
    	
    	for(int t=1; t<=T; t++) {
    		int N = Integer.parseInt(br.readLine());
    		String str = br.readLine();
    		
    		char[] ch = str.toCharArray();
    		
    		if(N % 2 != 0) System.out.println("#"+ t +" No");
    		else {
    			int num = str.length()/2;
    			int cnt = 0;
    			
    			for(int i=0; i<str.length()/2; i++) {
    			   if(ch[i] != ch[i+num]) {
    				   System.out.println("#"+ t +" No");
    				   break;
    			   }
    			   else {
    				   cnt++;
    			   }
    			}
    			if(cnt == num) System.out.println("#"+ t+" Yes");
    		}
    	}
    }
}

댓글