GaGe

[프로그래머스] 2020 KAKAO BLIND RECRUITMENT 문자열압축 - java 본문

알고리즘/[2020] 프로그래머스

[프로그래머스] 2020 KAKAO BLIND RECRUITMENT 문자열압축 - java

Sorrel 2020. 5. 16. 15:21
import java.util.ArrayList;
class Solution {
    public int solution(String s) {
        int answer = s.length();
        
        for( int i = 1 ; i<=s.length()/2; i++){ //몇글자로 자를 건지
            StringBuilder result = new StringBuilder();
            ArrayList<String> str = new ArrayList<String>(); //글자 별로 나눠서 저장할 str
            
            int finword = s.length()%i; //마지막 나누어지지 않는 글자 갯수 그대로 더하기
            
            for(int j = 0; j<=s.length()-i; j+=i){
                str.add(s.substring(j, j+i));
            }
            //System.out.println(str);
            int cnt = 1;
            for(int q = 0; q<str.size()-1; q++){
                if(str.get(q).equals(str.get(q+1))){
                    cnt++;
                }
                else{
                    if(cnt>1){
                        result.append(cnt);
                    }
                    result.append(str.get(q));
                    cnt=1;
                }
            }
            if(cnt>1){
                result.append(cnt);
                result.append(str.get(str.size()-1));
            }
            else{
                result.append(str.get(str.size()-1));
            }
            //System.out.println(result);
            //System.out.println(finword);
            if(answer>(result.length()+finword)){
                answer=result.length()+finword;
            }
        }
        
        
        return answer;
    }
}

뭔가 더 ArrayList를 사용하자는 생각이 든다.

import java.util.ArrayList;
class Solution {
    public int solution(String s) {
        int answer = 0;
        
        for( int i = 1 ; i<=s.length()/2; i++){ //몇글자로 자를 건지
            StringBuilder result = new StringBuilder();
            ArrayList<String> str = new ArrayList<String>(); //글자 별로 나눠서 저장할 str
            
            int finword = s.length()%i; //마지막 나누어지지 않는 글자 갯수 그대로 더하기
            
            for(int j = 0; j<s.length()-i; j+=i){
                str.add(s.substring(j, j+i));
            }
            //System.out.println(str);
            int cnt = 1;
            for(int q = 0; q<str.size()-1; q++){
                if(str.get(q).equals(str.get(q+1))){
                    cnt++;
                }
                else{
                    if(cnt>1){
                        result.append(cnt);
                    }
                    result.append(str.get(q));
                    cnt=1;
                }
            }
            if(cnt>1){
                result.append(cnt);
                str.get(str.size()-1);
            }
            else{
                str.get(str.size()-1);
            }
            System.out.println(str);
            
        }
        if(answer>(str.size()+finword)){
            answer=str.size()+finword;
        }
        
        
        
        return answer;
    }
}
class Solution {
    public int solution(String s) {
        int answer = 0;
        StringBuilder result = new StringBuilder( "" );
        
        for(int j = 0 ; j<s.length(); j++){
            int cnt = 1;
            for(int i = 0 ; i<s.length(); i = i+j){ //i=i+j
                if(i!= s.length()-1){
                    String str = s.substring(i, i+j);
                    String str2 = s.substring(i+j, i+(j*2));
                    if(str.equals(str2)){
                        cnt ++;
                    }
                    else{
                        if(cnt>1){
                            result.append(Integer.toString(cnt));
                        }
                        result.append(str);
                        cnt=1;
                    }
                }
                else{
                    String str = s.substring(i, i+1);
                    if(cnt>1){
                            result.append(Integer.toString(cnt));
                        }
                        result.append(str);
                        cnt=1;
                }
            }
        }
        System.out.println("result : "+result);
        return answer;
    }
}
class Solution {
    public int solution(String s) {
        int answer = 0;
        StringBuilder result = new StringBuilder( "" );
        //for j
        int cnt = 1;
        for(int i = 0 ; i<s.length(); i = i+1){ //i=i+j
            if(i!= s.length()-1){
                String str = s.substring(i, i+1);
                String str2 = s.substring(i+1, i+2);
                if(str.equals(str2)){
                    cnt ++;
                }
                else{
                    if(cnt>1){
                        result.append(Integer.toString(cnt));
                    }
                    result.append(str);
                    cnt=1;
                }
            }
            else{
                String str = s.substring(i, i+1);
                if(cnt>1){
                        result.append(Integer.toString(cnt));
                    }
                    result.append(str);
                    cnt=1;
            }
        }
        System.out.println("result : "+result);
        return answer;
    }
}
class Solution {
    public int solution(String s) {
        int answer = 0;
        String exam = "aabbaccc";
        String result="";
        //for j
        int cnt = 1;
        for(int i = 0 ; i<exam.length(); i = i+1){ //i=i+j
            if(i!= exam.length()-1){
                String str = exam.substring(i, i+1);
                String str2 = exam.substring(i+1, i+2);
                if(str.equals(str2)){
                    cnt ++;
                    System.out.println("count++ : "+cnt);
                }
                else{
                    if(cnt>1){
                        result.concat(Integer.toString(cnt));
                    }
                    result.concat(str);
                    System.out.println(result);
                    cnt=1;
                }
            }
        }
        System.out.println(result);
        System.out.println(exam);
        return answer;
    }
}
Comments