만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

숫자 교환

시간 제한2초메모리 제한128 MB

요약
정수 N의 자릿수를 정확히 K번 교환해 앞자리가 0이 되지 않게 만들 수 있는 가장 큰 수를 구하고, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 5점

유형
BFS, 완전 탐색, 문자열, 시뮬레이션
정답자
아직 제출이 없습니다

문제

0으로 시작하지 않는 정수 N이 주어진다. M을 N의 자릿수라고 하자. 다음 연산을 정확히 K번 수행한다.

왼쪽부터 세었을 때 1 <= i < j <= M인 두 위치 i와 j를 고른 뒤, 두 위치의 숫자를 서로 바꾼다. 바꾼 뒤의 수는 0으로 시작할 수 없다.

연산을 정확히 K번 수행한 뒤 만들 수 있는 수 중 최댓값을 구하라.

입력

첫째 줄에 정수 N과 K가 주어진다. N은 1,000,000 이하의 자연수이며 0으로 시작하지 않는다. K는 10 이하의 자연수이다.

출력

연산을 정확히 K번 수행한 뒤 만들 수 있는 가장 큰 수를 출력한다. 연산을 K번 모두 수행할 수 없다면 -1을 출력한다.

예제6

  1. 예제 1

    입력
    16375 1
    
    예상 출력
    76315
    
  2. 예제 2

    입력
    132 3
    
    예상 출력
    312
    
  3. 예제 3

    입력
    432 1
    
    예상 출력
    423
    
  4. 예제 4

    입력
    90 4
    
    예상 출력
    -1
    
  5. 예제 5

    입력
    5 2
    
    예상 출력
    -1
    
  6. 예제 6

    입력
    436659 2
    
    예상 출력
    966354