Game Develop

[Algorithm] Programmers :: 문자열 압축 본문

Algorithm/Programmers

[Algorithm] Programmers :: 문자열 압축

MaxLevel 2022. 7. 14. 00:29

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
int Check(int i)
{
    if (i == 1return 0;
 
    int count = 0;
 
    while (i != 0)
    {
        i = i / 10;
        count++;
    }
 
    return count;
}
 
int solution(string s) {
 
    int answerCount = 0;
    int answer = 1001;
 
    if (s.size() == 1return 1;
 
    for (int i = 1; i <= s.size() / 2; i++)
    {
        string stand = "";
        stand.append(s, 0, i);
        int repeatCount = 1;
        int j = i;
 
        while(1)
        {
            if (s.size() - j < i)
            {
                answerCount += i;
                answerCount += Check(repeatCount);
                answerCount += s.size() - j;
                break;
            }
 
            string temp = "";
            temp.append(s, j, i);
 
            if (stand != temp)
            {
                stand = temp;
                answerCount += i; // '끊는글자수'만큼
                answerCount += Check(repeatCount); // repeatCount 자리수만큼
                repeatCount = 1;
            }
            else // 이전꺼랑 같으면 Count++
            {
                repeatCount++;
            }
 
            j += i;
        }
 
        if (answerCount <= answer) answer = answerCount;
        answerCount = 0;
    }
 
    return answer;
}
cs

카카오 2레벨짜리 문제다.

주어진 문자열을 n개의 글자수마다 압축시켰을 때, 최대압축문자열의 길이를 리턴한다.

n은 최소 1, 최대 문자열 사이즈의 절반이다. 절반을 넘어서서 검사하는건 의미가없다. 압축할게 없기 때문이다.

 

음 그냥 구현문제인데, 생각보다 좀 걸렸다.

이런 문제처럼 반복문의 인덱스를 1을 초과한값을 더해야 할 때는 그냥 while문 쓰는게 덜 헷갈릴것같다.

그냥 for문으로 했다가 조금 헷갈려서 시간이 걸렸다.