ssks1013   3년 전

한 자리수와 10의 배수인 두 자리 수는 무조건 -1로 처리합니다

일단 N이라는 숫자가 주어지면 한 자리씩 분리해서 내림차순 정렬하면 그게 가장 큰 수가 되는 것을 알 수 있습니다

교환할 때 마다 가장 마지막으로 나오는 가장 큰 수를 제일 앞으로 교환하는 작업을 반복합니다.

이때, 현재 교환하려는 자리가 이미 가장 큰 수에서 같은 자리의 수와 동일하다면 그 자리는 교환할 필요가 없습니다.

이렇게 앞쪽부터 순차적으로 교환 작업을 합니다.

만약 교환 중에 이미 가장 큰 수에 도달했다면, 남은 교환 횟수가 홀수인지 짝수인지 계산합니다. 

짝수일 경우 가장 큰 수를 출력하면되고 

홀수일 경우는 중복된 숫자가 포함되어 있으면 가장 큰 수를, 그렇지 않으면 가장 큰 수에서 마지막 두 자리만 교환한 숫자를 출력합니다


위 로직을 바탕으로 코드를 작성했는데 틀렸습니다.
혹시나 로직이 잘못되어있는 건지... 반례좀 부탁드리겠습니다

ghghgh777   3년 전

input 31299 2

output 99213

answer 99231 (31299 - 91239 - 99231)

댓글을 작성하려면 로그인해야 합니다.