본문 바로가기
코딩 테스트

프로그래머스 - 문자열 압축

by 주용사 2023. 1. 9.
728x90
class Solution {
	public int solution(String s) {
		int answer = s.length();

		for (int ii = 1; ii <= s.length() / 2; ii++) {
			int pos = 0;
			int length = s.length();

			for (; pos + ii <= s.length();) {
				String unit = s.substring(pos, pos + ii);
				pos += ii;
				
				int count = 0;
				for (; pos + ii <= s.length();) {
					if (unit.equals(s.substring(pos, pos + ii))) {
						count++;
						pos += ii;
					} else
						break;
				}

				if (count > 0) {
					length -= ii * count;

					if (count < 9)
						length += 1;
					else if (count < 99)
						length += 2;
					else if (count < 999)
						length += 3;
					else
						length += 4;
				}

				answer = Math.min(answer, length);

			}

		}

		return answer;
	}
}

https://programmers.co.kr/learn/courses/30/lessons/60057

728x90