개발/코딩

[프로그래밍] 프로그래머스 예제문제 풀어보기 <문자열 압축> (성공)

mabb 2022. 3. 18. 23:30
반응형

 프로그래머스 <문자열 압축> 예제문제를 풀어보았다. 동작은 하지만 주먹구구의 코드라는 생각이 든다.
내가 뭘 하고 있는건가, 코드가 지저분해지고 있는 것 같다는 생각이 코딩을 하면서도 스스로 드는 것이다.
해당 문제는 주어진 문자열을 조건에 맞춰 압축하고 가장 최적의 압축을 하였을 때의 문자열 길이를 출력하는 것이 목적이다. 코드를 더욱 간결하게 만들기 위한 공부를 해야겠다.

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
import java.util.ArrayList;
class Solution {
    public int solution(String s) {
        
        String answerString = "";
        int answer = s.length();
        ArrayList<String> sArray = new ArrayList<String>();
        
        for(int i = 1; i<= s.length()/2;i++){
            answerString = "";
                sArray.clear();
                for(int n = 0; n<=s.length()-1;n+=i){
                    
                    try {
                        sArray.add(s.substring(n,n+i));
                    } catch (Exception e) {
                        sArray.add(s.substring(n,s.length()));
                    }
                }            
                
        
        int zipCount = 1;
        for(int j =0 ; j<sArray.size();j++) {
            String temp = sArray.get(j);
        
            if(j == sArray.size()-1) {
                if(zipCount ==1) {
                    answerString += temp;
                    break;
                }else if(zipCount !=1) {
                    answerString += (Integer.toString(zipCount)+temp);
                    break;
                }
            }
            if(temp.equals((sArray.get(j+1)))) {
                zipCount ++;
                
            }else if(!temp.equals((sArray.get(j+1)))) {
                if(zipCount ==1) {
                    answerString += temp;
                    
                }else if (zipCount != 1) {
                    answerString += (Integer.toString(zipCount)+temp);
            }
                zipCount = 1;
            }
        }    
    
        
        if(answer>answerString.length()) {
            answer = answerString.length();
        }
        
        }
        return answer;
    
        }
}
cs

 

출처: 프로그래머스 채점결과

 

반응형