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

Cos Pro 1급 - 샘플 문제 풀이 2차 10번 (charAt() 활용하기)

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

연속한 0을 하나로 줄이기

문제 지문 #10


0과 1로만 이루어진 문자열에서 연속해서 붙어있는 0들을 하나의 0으로 줄이려 합니다.

예를 들어 "101100011100" 이란 문자열은 "101101110"으로 만들면 됩니다.

0과 1로만 이루어진 문자열 s가 매개변수로 주어질 때, 연속해서 붙어있는 0들을 하나의 0으로 줄인 문자열을 return 하도록 solution 메소드를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _한 줄_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.


매개변수 설명

0과 1로만 이루어진 문자열 s가 solution 메소드의 매개변수로 주어집니다.

  • s의 길이는 1 이상 1,000 이하입니다.

return 값 설명

연속해서 붙어있는 0들을 하나의 0으로 줄인 문자열을 return 해주세요.


예시

s return
"101100011100" "101101110"

#####예시 설명
1은 줄이지 않으며, 연속해서 붙어있는 0만 하나의 0으로 줄이면 됩니다.


혼자 풀이



한 줄 고치기 문제입니다. 한번에 딱 생각이 안났는데, 
틀린 곳을 찾는다는 생각보다는 어떻게 코드를 구현해야 할까에 초점을 맞추고 푸니 답이 보였습니다.
charAt() 함수가 사용이 많네요.

/*********************************************
    2차 10번 연속된 0을 하나의 0으로 바꾸기
 *********************************************/

class MySolution {
    public String solution(String s) {
        s += '#';
        String answer = "";
        for(int i = 0; i < s.length(); ++i){
            if (s.charAt(i) == '0' && s.charAt(i+1) != '0')
                answer += "0";
//          else
            else if(s.charAt(i)=='1')  //수정한 부분
            
                answer += "1";
        }
        return answer;
    }

    // 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다. main 메소드는 잘못된 부분이 없으니, solution 메소드만 수정하세요.
    public static void main(String[] args) {
        MySolution sol = new MySolution();
        String s = "101100011100";
        String ret = sol.solution(s);

        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
        System.out.println("solution 메소드의 반환 값은 " + ret + " 입니다.");
    }
}

 

정답


혼자 풀이와 동일합니다.

첨부 파일

프로젝트 파일 전체를 첨부합니다.
Solution 이 문제, CorrectSolution 이 정답, MySolution이 제가 푼 것입니다.
"Project from existing sources..." 메뉴에서 불러다 쓰시면 됩니다.

SecondQuestion10.zip
0.01MB

출처: https://www.ybmit.com/cos_pro/cos_pro_r_test.jsp

728x90

댓글