PAT 문제 풀이 일기 B1023 조 개 최 소수

B1023 조 개 최 소수.
  • 제목 설명
  • 입력 설명
  • 출력 설명
  • 입력 예
  • 출력 예
  • 사고방식
  • 코드

  • 제목 설명
    주어진 숫자 0 - 9 각각 몇 개 씩.너 는 이 숫자 들 을 임의의 순서 로 배열 할 수 있 지만, 반드시 전부 사용 해 야 한다.목 표 는 마지막 에 얻 은 숫자 를 가능 한 한 작 게 하 는 것 이다.예 를 들 어 0, 2 개 1, 3 개 5, 1 개 8 을 정 하면 우리 가 얻 은 가장 작은 수 는 10015558 이다.
    현재 주어진 숫자 입 니 다. 프로그램 출력 으로 구 성 될 수 있 는 최소 수 를 작성 하 십시오.
    입력 설명
    입력 마다 테스트 용례 가 1 개 씩 포함 되 어 있 습 니 다.각 테스트 사례 는 한 줄 에 10 개의 비 마이너스 정 수 를 제시 하고 순 서 는 우리 가 숫자 0, 숫자 1,... 숫자 9 의 개 수 를 가지 고 있다 는 것 을 나타 낸다.정수 간 을 빈 칸 으로 나누다.10 개의 숫자의 총 개 수 는 50 을 넘 지 않 고 적어도 1 개의 0 이 아 닌 숫자 를 가지 고 있다.
    출력 설명
    한 줄 에서 구성 할 수 있 는 최소 수 를 출력 합 니 다.
    입력 예
    2 2 0 0 0 3 0 0 1 0
    출력 예
    10015558
    사고의 방향
    욕심 많은 알고리즘 을 이용 하여 0 이 아 닌 최소 수 를 첫 번 째 로 한 다음 나머지 수의 최소 수 를 순서대로 뒤에 놓 고 답 을 얻 을 수 있 습 니 다. (문자열 연결 문제 로 이해 할 수 있 습 니 다)
    코드
    #include 
    int main(int argc, const char * argv[]) {
         
        int smallNumber[10];//    0-9   
        for (int i=0; i<10; i++) {
         
            scanf("%d",&smallNumber[i]);
        }
        for (int i=1; i<10; i++) {
         //        
            if (smallNumber[i]!=0) {
         
                printf("%d",i);
                smallNumber[i]--;
                break;
            }
        }
        for (int j=0; j<10; j++) {
         //      
            for (int i=0; i<smallNumber[j]; i++) {
         
                printf("%d",j);
            }
        }
        return 0;
    }
    

    좋은 웹페이지 즐겨찾기