구름톤 챌린지 문자열 나누기

[느낀점]

5일차부터 난이도가 갑자기 좀 올라갔다고 생각했다. 결국 24시간 내에 못풀고 풀이가 공개되고 나서 참고해가며 풀었다...

5일차에 다짐했던 주석달며 깔끔하게 작성하기라는 목표는 지켰다고 생각한다. 결과 코드도 사진이 아니라 코드를 작성하는 것으로 바꿨다. 나는 아직 많이 멀었다. 많이 공부해야겠다.

 

[결과 코드]

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

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 S = br.readLine();
		List<String> list = new ArrayList<>();
		List<String[]> arlist = new ArrayList<>();
		
		// 부분문자열배열 arlist에 등록, 존재할수 있는 모든 부분문자열 list 에 등록
		for(int i=1;i<N;i++){
			for(int j=i+1;j<N;j++){
				String first = S.substring(0,i);
				String second = S.substring(i,j);
				String third = S.substring(j,N);
				arlist.add(new String[]{first,second,third});
				list.add(first);
				list.add(second);
				list.add(third);
			}
		}
		// streamAPI를 이용한 list 중복요소 제거 및 정렬
		list = list.stream().distinct().collect(Collectors.toList());
		Collections.sort(list);
		
		//점수판 생성
		Map<String, Integer> map = new HashMap<>();
		for(int i=0;i<list.size();i++){
			map.put(list.get(i),i+1);
		}
		
		//최고점수 찾기
		int Maxscore = 0;
		for(String[] words : arlist) {
			int tmpscore = 0;
			for(String word : words) {
				tmpscore += map.get(word);
			}
			if(tmpscore>=Maxscore) {
				Maxscore = tmpscore;
			}
		}
		
		System.out.println(Maxscore);
	}
}

 

+ Recent posts