대충이라도 하자

프로그래머스 2020 kakao blind recruitment 문자열 본문

꼬꼬마 개발자 노트/Coding Problems

프로그래머스 2020 kakao blind recruitment 문자열

Sueeeeee
반응형

- 아이디어는 잘 생각했는데 항상 구현, 오류에서 막히는 듯....ㅜㅜ

1. 맨 처음, 1개씩 잘라서 압축, 2개씩 잘라서 압축 이 부분에서 나는 s.length()만큼 반복문을 돌렸는데

생각해보니 나누기 2해서 돌려도 된다. 왜냐하면 2개씩 나눠지지 않는 경우라면, 결국 의미가 없기 때문에

2. 예외의 경우를 잘 생각해보자.

2-1)메소드를 만드는 부분에서 제일 중요한 것은 잘라낼 수가 s.length()에 나누어 떨어지지 않는 경우

2-2) 마지막은 반복문에 빠져나와 버려서 마지막 문자열 남는 부분을 꼭 더해줘야 한다.

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
class Solution {
    public int solution(String s) {
        int len = s.length();
        int answer = len;
        for(int i = 1;  i<=len/2; i++){
            answer = Math.min(answer, dfs(i, s));
        }
        return answer;
    }
    private int dfs(int num, String s){
        //몇 개 단위로 자를지 정해지면 압축하는 함수
        int count = 1;        
        String temp = "";
        String result ="";
        int len = s.length();
        
        for(int i=0 ; i<=len;i+=num){
            String now;
            if(i >=len){
                now=""; //아무것도 없음
            }else if(len < i+num){//마지막 현재 문자열
                now = s.substring(i);
            }else {
                now = s.substring(i ,i+num);
            }
            if(i != 0){
                if(now.equals(temp)){
                    count++;
                }else if(count>=2) {
                    result += count+ temp;
                    count=1;
                }else {
                    result += temp;
                }
           }
            temp = now;
        }
        result +=temp; //맨 마지막 남은 부분
        return result.length();
    }
}
cs

반응형
Comments