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

Cos Pro 1급 - 샘플 문제 5차 4번 - 숫자 갯수 세기(String.valueOf)

by 우공80 2022. 11. 12.
728x90

숫자를 세어 문자열로 반환하기

문제 지문 #4


주어진 숫자를 각 숫자와 숫자의 개수로 읽으려 합니다. 이때, 값이 큰 숫자를 먼저 읽어야 합니다.

예를 들어, 2433은 2 한 개 4 한 개 3 두 개로 이루어져 있기 때문에 "413221"로 읽습니다.

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


#####매개변수 설명
숫자 number가 solution 메서드의 매개변수로 주어집니다.

  • number는 0 이상 2,000,000,000 이하인 정수입니다.

#####return 값 설명
주어진 숫자를 읽어 문자열 형태로 return 합니다.


#####예시

number return
2433 "413221"
662244 "624222"

#####예시 설명
예시 #1
문제에 나온 예와 같습니다.

예시 #2
662244는 6 두 개 2 두 개 4 두 개로 이루어져 있기 때문에 "624222"로 읽습니다.

728x90

 

혼자 풀이


한 줄 고치기 문제입니다. 주어진 수의 각 자릿수의 숫자가 몇 개인지 세고, 숫자+개수 형식으로 큰 수부터 차례로 문자열에 붙여 반환하는 문제입니다. 아래와 같은 순서로 로직이 구성되어있습니다.

1. 1~9까지의 숫자를 담는 배열을 만든다.
2. 각 숫자가 몇 개인지 값을 증가시키면서 모든 자릿수를 순환한다.
3. 위에서 만든 배열의 역순으로 숫자+숫자의 개수 형식으로 문자열에 추가하여 값을 반환한다.

이번 문제는 답만 풀지 않고, 문제를 지우고, 전체를 코딩했습니다.
문자열 구성할 때, 저는 (char)로 형 변환을 했는데, 문제에서는 String.valueOf() 메서드를 사용했네요.
이 부분을 제외하고는 크게 차이가 없었습니다.

class Main {
    public String solution(int number) {
    	String answer = "";

        int[] numberCount = new int[10];
        while(number > 0) {
            numberCount[number % 10]++;  //10으로 나눈 나머지가 마지막 자리의 숫자
            number /= 10;//10으로 나누면서 자리수 감소
        }

        // for(int i = 0; i < 10; i++)
        for(int i = 9; i >= 0; i--) //큰 숫자부터 출력하므로 역순
        	if(numberCount[i] != 0)
        		answer += (String.valueOf(i) + String.valueOf(numberCount[i]));
                //answer=answer+(char)(i+'0')+(char)(numberCount[i]+'0'); //혼자 했을 때 달랐던 부분
                //answer += Integer.toString(i)+Integer.toString(numberCount[i]); //toString()도 가능
        
        return answer;
    }
    // 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다. 아래에는 잘못된 부분이 없으니, 위의 코드만 수정하세요.
    public static void main(String[] args) {
    	Main sol = new Main();
    	int number1 = 2433;
    	String ret1 = sol.solution(number1);

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

    	int number2 = 662244;
    	String ret2 = sol.solution(number2);

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

 

실습은 아래 참고


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

 

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

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

woogong80.tistory.com

728x90

댓글