백준 크리 문자열 문제

정호윤·2023년 3월 17일

자바

목록 보기
36/46

백준문제링크

누적합 난이도 실버 5이길래 쉽겠거니~하고 들어갔다고 엄청 고생했다.문자열 반 나누고 양쪽합 구하는 코드가 생각이 안 나더라.난 알고리즘이 문제가 아니고 구현 능력이 너무 부족한거 같다.

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

public class Main {
	
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int sz = str.length();
        int[] arr = new int[sz+1];
        //누적합 배열을 저장
        for(int i=1;i<arr.length;i++) arr[i]=arr[i-1]+str.charAt(i-1)-'0';
        //i는 내가 검사할 문자열의 길이를 의미한다.전체 길이가 홀수일 경우 -1된 길이가 나온다.짝수만 검하해야 하기에 -2
        for(int i=(sz/2)*2;i>=2;i-=2){
        // 절반씩 잘라서 비교해야 하기에 
            int n = i/2;
            // j는 검사할 문자열의 끝 인덱스를 의미한다.
            for(int j=i;j<=sz;j++){
            //반반 더해서 똑같은지 비교하는 코드
                if(arr[j]-arr[j-n]==arr[j-n]-arr[j-i]){
                    System.out.println(i);
                    return;
                } 
            }
        }
	}
}

    
        
        
profile
개발자로 취직을 희망합니다.

0개의 댓글