본문 바로가기
Programming/Cos Pro 1급

Cos Pro 1급 - 샘플 문제 풀이 4차 2번 (문자열 압축)

by 우공80 2022. 10. 27.
728x90

문자열 압축하기

문제 지문 #2


알파벳 소문자와 대문자로 구성된 문자열을 압축하려 합니다. 압축이란 대표 문자와 대표 문자가 연속되는 개수를 함께 표현하는 것입니다. 이때, 대문자와 소문자는 구분하지 않으며, 대표 문자는 소문자로 표현합니다.

예를 들어, 문자열 "YYYYYbbbBbbBBBMmmM"을 압축하면 "y5b9m4"입니다.

문자열 s가 매개변수로 주어질 때, s를 압축한 문자열을 return 하도록 solution 메서드를 작성했습니다. 그러나, 일부 코드가 잘못되어 코드가 바르게 동작하지 않습니다. 주어진 코드가 모든 입력을 바르게 처리하도록 코드를 수정해주세요. 코드는 _한 줄_만 수정해야 합니다.


매개변수 설명

문자열 s가 solution 메서드의 매개변수로 주어집니다.

  • s의 길이는 1 이상 100000 이하입니다.
  • s는 알파벳 소문자, 대문자로만 구성됩니다.
  • 알파벳이 반복되는 횟수는 9회 이하로만 주어집니다.
    • 즉, “sssSSSSsss” 와 같은 경우는 주어지지 않습니다.

return 값 설명

s를 압축한 결과를 return 해주세요.


예시

s return
"YYYYYbbbBbbBBBMmmM" "y5b9m4"

예시 설명

예시 #1
문제의 예와 같습니다.

728x90

 

혼자 풀이

한 줄 고치기 문제입니다. 난이도는 쉬운 편입니다. 예시 기준으로 로직 따라가면 틀린 곳은 쉽게 찾을 수 있습니다.

import java.util.*;

class Solution {    
    public String solution(String s) {
        s = s.toLowerCase();   //대소문자 구분하지 않으므로 소문자로 변경
        String answer = "";
        char previous = s.charAt(0); //s의 첫번째 문자를 previous에 할당
        int counter = 1;
        
        for(int i=1; i<s.length(); i++){  //s의 각 문자에 대해 루프를 순회하면서
            if(s.charAt(i) == previous)  //앞글자와 현재 글자가 동일하면
                counter++;                //counter를 증가
            else {
                answer += previous;    //앞글자와 현재 글자가 다르면 previous와 counter를 answer에 붙이고
                answer += counter;      
                counter = 1;           //counter를 초기화
//              previous = s.charAt(0);
                previous = s.charAt(i);  //수정한 부분: i에서 previous와 달라졌으므로 i번째부터 다시 문자열 압축 계속함
            }
        }
        answer += previous;  //마지막 previous와 counter를 answer에 붙여서 반환
        answer += counter;
        return answer;
    }
    
    // 아래는 테스트케이스 출력을 해보기 위한 코드입니다. 아래에는 잘못된 부분이 없으니, 위의 코드만 수정하세요.
    public static void main(String[] args) {
        Solution sol = new Solution();
        String s = new String("YYYYYbbbBbbBBBMmmM");
        String ret = sol.solution(s);
        
     // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("solution 메소드의 반환 값은 \"" + ret + "\" 입니다.");
   }
}

 

실습은 아래 참고

2022.10.25 - [Programming/Cos Pro 1급] - Cos Pro 1급 공부 사이트 추천 - 구름 에듀(https://edu.goorm.io/)

 

Cos Pro 1급 공부 사이트 추천 - 구름에듀(https://edu.goorm.io/)

구름 EDU??? YBM 공식 사이트에서 받은 문제 지문/문제 코드/정답 코드를 intellij에서 공부하다가 후배 추천으로 구름 에듀를 알게 되었습니다. 문제 지문 따로 문제 코드 따로 열어보는 게 여간 불

 

728x90

댓글