유리쯔의일상 2023. 11. 1. 21:54
반응형

👇 공부한 자료들의 실제 소스파일들을 기록해논 공간입니다 👇

 

 

 

문제 고민

예시 1번을 먼저 풀어보자
 KK -> 2번
 H -> 1번 
 SSSSSS -> 7번 
 E -> 1번
 String 문자를 배열로 처리한 뒤 검사한다
 count 처리할 변수도 필요하다
 1 은 그냥 출력하고 카운팅이 2 이상부터는 숫자로 한다
 출력시 문자와 숫자를 같이 출력해야 한다

 

첫 시도 했을 때 숫자만 찍어보았다.

예시 1번으로 했을 때 2 / 1 / 7  이 찍혔다 

문자를 같이 출력했을 때 

K2H2S8 이 나왔다

답은 K2HS7E 이어야 하는데 H와 E 가 빠졌고 , S 카운팅 또한 8로 나와 이상했다.

2차 시도 시 정확하게 나오긴 했으나 예시 2번 문제에 끝 G2까지 찍히지 않았다. if 문을 다시 수정해야 했고

다시 풀어보았다

결론은 성공!

다른 방식으로 또 풀어봐야겠다

 

 

 

 

 

나의 풀이

package Chapter_List;

import java.util.Scanner;

public class chapter_11 {
    public void solution(String str) {
        int cnt = 1;
        for (int i = 0; i < str.length(); i++) {
            if ( i+1 < str.length() ){
                if ( str.charAt(i) == str.charAt(i+1)) cnt++;
                else if ( str.charAt(i) != str.charAt(i+1) && cnt > 1) {
                    System.out.print( str.charAt(i) + "" + cnt );
                    cnt = 1;
                } else if ( str.charAt(i) != str.charAt(i+1) && cnt < 2) System.out.print(str.charAt(i));
            } else if ( i+1 == str.length() ){
                if (str.charAt(i-1) == str.charAt(i)) System.out.print(str.charAt(i) +""+cnt);
                else System.out.print(str.charAt(i));
            }
        }
    }

    public static void main(String[] args) {
        chapter_11 T = new chapter_11();
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        T.solution(str);
    }
}

 

 

정답은 맞지만.

문제난이도에 비해 너무 시간복잡도가 올라가 보였다.

쌤의 문제 풀이를 보고 

무릎을 탁! 치게되었다

이렇게 간단히 풀다니.

 

 

 

쌤의 풀이

package Chapter_List;  
  
import java.util.Scanner;  
  
public class chapter_11 {  
    public String solution(String str) {  
        String answer = "";  
        str += str+" ";  
        int cnt = 1;  
        for (int i = 0; i < str.length()-1; i++) {  
            if (str.charAt(i)== str.charAt(i+1)) cnt++;  
            else {  
                answer+=str.charAt(i);  
                if (cnt > 1) answer+=String.valueOf(cnt);  
                cnt=1;  
            }  
        }  
        return answer;  
    }  
  
    public static void main(String[] args) {  
        chapter_11 T = new chapter_11();  
        Scanner in = new Scanner(System.in);  
        String str = in.nextLine();  
        System.out.println(T.solution(str));  
    }  
}
반응형