diff --git a/programmers/문자열 압축/solution.java b/programmers/문자열 압축/solution.java new file mode 100644 index 0000000..b813871 --- /dev/null +++ b/programmers/문자열 압축/solution.java @@ -0,0 +1,47 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/60057 + +import java.lang.StringBuilder; +import java.util.*; +class Solution { + private String calc(String s, int a){ + int count = 1, tc = 0; + String temp = ""; + StringBuilder sb = new StringBuilder(), sb2 = new StringBuilder(); + for(int i = 0; i < s.length(); i += a){ + sb.setLength(0); + for(int x = i; x < Math.min(i+a,s.length()); x++){ + sb.append(s.charAt(x)); + if(x == s.length()-1) tc=1; + } + + if(temp.equals(sb.toString())){ + count++; + if(tc==1){ + sb2.append((count!=1)?(count+temp):temp); + + } + } else if(temp.equals("")){ + temp = sb.toString(); + // System.out.println(temp); + } else{ + sb2.append((count!=1)?(count+temp):temp); + temp = sb.toString(); + count = 1; + if(tc==1){ + sb2.append(temp); + } + } + } + // System.out.println(sb2); + return sb2.toString(); + } + public int solution(String s) { + PriorityQueue pq = new PriorityQueue<>(); + if(s.length()==1) return 1; + for(int a = 1; a < s.length()/2+1; a++){ + // System.out.println(calc(s,a).length()); + pq.add(calc(s,a).length()); + } + return pq.peek(); + } +} \ No newline at end of file