-
[프로그래머스] 문자열 압축 (2020 KAKAO BLIND RECRUITMENT)ALGORITHM/PROGRAMMERS 2021. 3. 5. 22:41
programmers.co.kr/learn/courses/30/lessons/60057
2021-03-05
123456789101112131415161718192021222324252627public class Solution60057 {public static int solution(String s) {int answer = s.length();for(int i = 1; i <= s.length()/2; i++) {int sum = 0;int count = 0;for(int j = 0; j <= s.length() - i; j+=count*i) {String str = s.substring(j, j+i);count = 1;for(int k = j+i; k <= s.length() - i; k+=i) {String comp = s.substring(k, k+i);if(str.equals(comp)) count++;else break;}sum += ((count == 1) ? 0 : (String.valueOf(count).length())) + str.length();}sum += s.length() % i;answer = Math.min(sum, answer);}return answer;}public static void main(String[] args) {String s = "ababcdcdababcdcd";System.out.println(solution(s));}}cs #문제풀이
그냥 직관적으로 풀었다.
문자열의 길이도 길지 않아서, 문자를 1개 단위부터 ~ s.length()/2개 단위까지 나눠서 잘라보았다.
그리고 자른 문자열을 비교해가면서 같은 문자끼리 묶어서 길이를 계산하였고, 그 중 가장 짧은 것의 길이를 return 하였다.
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 튜플 (2019 카카오 개발자 겨울 인턴십) (0) 2021.03.07 [프로그래머스] 오픈채팅방 (2019 KAKAO BLIND RECRUITMENT) (0) 2021.03.05 [프로그래머스] 징검다리 건너기 (2019 카카오 개발자 겨울 인턴십) (0) 2021.03.04 [프로그래머스] 경주로 건설 (2020 카카오 인턴십) (0) 2021.03.02 [프로그래머스] 자동완성 (2018 KAKAO BLIND RECRUITMENT) (0) 2021.03.02