문제 내용은 입력으로 문자열을 받고 해당 값을 짝수 단위로 분리했을 경우 분리한 절반이 나머지 절반과 모두 더해봤을 때 동일하다면, 해당 조건에서 가장 길게 나올 수 있는 값을 찾아, 그 길이를 출력해야 하는데
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String target = br.readLine();
int maxLength = 0;
for (int i = 0; i < target.length(); i++) {
for (int j = i + 2; j <= target.length(); j += 2) {
String subStr = target.substring(i, j);
int sumFirstHalf = 0;
int sumSecondHalf = 0;
for (int k = 0; k < subStr.length() / 2; k++) {
sumFirstHalf += subStr.charAt(k) - '0';
sumSecondHalf += subStr.charAt(k + subStr.length() / 2) - '0';
}
if (sumFirstHalf == sumSecondHalf && subStr.length() > maxLength) {
maxLength = subStr.length();
}
}
}
System.out.println(maxLength);
}
}
문제를 풀어보면 for 문을 두 번 돌리면서 짝수 횟수만큼만 비교를 진행해주되, 앞에 부분과 뒤에 부분을 각각 더해서 값이 동일한지 확인하고, 이후 동일하다면 가장 긴 값을 계속 갱신하는 식으로 진행한 다음 가장 긴 값의 길이를 출력해주면 끝이다
Leave a Reply