Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python의 최대 스왑


음수가 아닌 정수가 있다고 가정합니다. 최대 값을 얻기 위해 최대 한 번 두 자리 숫자를 바꿀 수 있습니다. 얻을 수 있는 최대 값을 반환해야 합니다. 따라서 입력이 2736과 같으면 출력은 7236이 됩니다. 그래서 여기에서 2와 7을 교환합니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • num :=숫자에서 각 숫자를 잘라내어 목록을 만듭니다.
  • num1 :=역순으로 숫자 정렬
  • 색인:=0
  • while 인덱스
  • num1[index]가 num[index]
      과 같지 않은 경우
    • a :=인덱스(색인 + 1)에서 끝까지 num의 하위 배열
    • 뒤집기
    • a :=a의 길이 - 인덱스 num[index]의 a + 인덱스 + 1 - 1
    • 숫자[인덱스], 숫자[a] :=숫자[a], 숫자[인덱스]
    • 루프를 끊다
  • 색인 1 증가
  • num에 있는 숫자를 결합하여 정수로 만듭니다.
  • 결과를 반환합니다.
  • 예제(파이썬)

    더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

    class Solution:
       def maximumSwap(self, num):
          num = list(map(int,list(str(num))))
          num1 = sorted(num,reverse=True)
          index=0
          while index<len(num):
             if num1[index]!=num[index]:
                a = num[index+1:]
                a.reverse()
                a=len(a) - a.index(num1[index])+index+1 -1
                num[index],num[a] = num[a],num[index]
                break
             index+=1
          return int("".join(str(x) for x in num))
    ob1 = Solution()
    print(ob1.maximumSwap(5397))

    입력

    5397

    출력

    9357