알고리즘(백준 등) 공부

SWEA 17319. 문자열문자열

posite 2026. 5. 2. 14:07

주어진 문자열이 같은 문자열 2개가 연결되어있는 문자열문자열 형태인지 확인하는 문제이다.

 

문자열의 길이, 문자열이 주어지는데 같은 문자열이 연결되어 있을 경우 길이가 짝수이므로 길이가 홀수인 문자열은 문자열문자열이 될 수 없다.

if(length % 2 == 1) {
    sb.append("No").append('\n');
    continue;
}

 

 

이후, 맨 앞부터  중간까지 중간부터 끝과 순서대로 문자를 비교하여 같지 않은 부분이 발견되면 이는 문자열문자열이 아니다. 비교 후, 같지 않은 부분이 없다면 문자열문자열이다.

for(int i=0; i<length/2; i++) {
    if(str.charAt(i) != str.charAt(length/2 + i)) {
        sb.append("No").append('\n');
        continue outer;
    }
}
sb.append("Yes").append('\n');

 

 

결과 코드는 다음과 같다.

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

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());
        StringBuilder sb = new StringBuilder();

        outer: for (int tc = 1; tc <= T; tc++) {
            sb.append('#').append(tc).append(' ');
            int length = Integer.parseInt(br.readLine());
            String str = br.readLine();
            if(length % 2 == 1) {
                sb.append("No").append('\n');
                continue;
            }
            
            for(int i=0; i<length/2; i++) {
                if(str.charAt(i) != str.charAt(length/2 + i)) {
                    sb.append("No").append('\n');
                    continue outer;
                }
            }
            sb.append("Yes").append('\n');
        }
        
        br.close();
        System.out.print(sb);
    }
}