문제 6. 문자열 나누기
해당 문제는 문자열을 분리하는 모든 경우의 수를 조합으로 탐색한 후, 조건에 따라서 점수를 측정하는 완전 탐색 문제입니다. 신규 제작 문제입니다.
String first = inputString.substring(0, i);
String second = inputString.substring(i, j);
String third = inputString.substring(j);
ArrayList<ArrayList> splitStrs = new ArrayList<>();
tempStrs.add(first);
tempStrs.add(second);
tempStrs.add(third);
Set<String> score = new HashSet<>();
score.add(first);
score.add(second);
score.add(third);
for(Map.Entry<String, Integer> elem : map.entrySet()){
String key = elem.getKey();
if (key.equals(splitStrs.get(i).get(j))) {
temp += elem.getValue();
}
}

import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String inputString = br.readLine();
// 1. 3개의 부분 문자열로 나누기 substring
// 2. 나눈 문자열들 배열에 담기
ArrayList<ArrayList> splitStrs = new ArrayList<>();
String splitStr = "";
// 중복제거
Set<String> score = new HashSet<>();
for (int i = 1; i < n; i++) {
for (int j = i + 1; j < n; j++) {
ArrayList tempStrs = new ArrayList<>();
String first = inputString.substring(0, i);
tempStrs.add(first);
score.add(first);
String second = inputString.substring(i, j);
tempStrs.add(second);
score.add(second);
String third = inputString.substring(j);
tempStrs.add(third);
score.add(third);
splitStrs.add(tempStrs);
}
}
// 점수 세팅
List<String> tempScore = new ArrayList<>(score);
Collections.sort(tempScore);
Map<String, Integer> map = new HashMap<>();
for(int i = 0; i < tempScore.size(); i++) {
map.put(tempScore.get(i), i+1);
}
// 점수 더하기
int result = 0;
for(int i=0; i < splitStrs.size(); i++) {
int temp = 0;
for(int j = 0; j < 3; j++) {
for(Map.Entry<String, Integer> elem : map.entrySet()){
String key = elem.getKey();
if (key.equals(splitStrs.get(i).get(j))) {
temp += elem.getValue();
}
}
if (result < temp) {
result = temp;
}
}
}
System.out.println(result);
}
}