https://school.programmers.co.kr/learn/courses/30/lessons/60057
정수의 자릿수를 구하는 동작 (정답 받고 풀이 찾아보다 발견)
- String.valueOf(num).length() => (int) Math.log10(num) + 1
헤맨 부분
- 압축 횟수 >= 10인 경우가 존재한다.
class Solution {
public int solution(String s) {
int S = s.length();
int answer = S;
for(int i = 1; i < S; i++) {
int st = 0;
String prev = "";
int sum = 0;
int cnt = 1;
for(int ed = st + i; ed <= S; st += i, ed += i) {
String sub = s.substring(st, ed);
if(prev.equals(sub)) {
cnt++;
}
else {
sum += i;
if(cnt != 1)
sum += (int) Math.log10(cnt) + 1;
prev = sub;
cnt = 1;
}
}
if(cnt != 1)
sum += (int) Math.log10(cnt) + 1;
answer = Math.min(answer, sum + S - st);
}
return answer;
}
}
'[프로그래머스] 절대 외부 IDE를 써선 안돼 > Java' 카테고리의 다른 글
[lv2] 쿼드압축 후 개수 세기 (0) | 2024.12.31 |
---|---|
[lv3] 표현 가능한 이진트리 (0) | 2024.12.28 |
[lv2] 최솟값 만들기 (0) | 2024.12.22 |
[lv2] 이진 변환 반복하기 (0) | 2024.12.22 |
[lv2] 최댓값과 최솟값 (0) | 2024.12.22 |