이 튜토리얼에서는 한 번의 스왑으로 가장 큰 수를 찾는 프로그램을 작성할 것입니다.
문제를 해결하는 단계를 살펴보겠습니다.
- 숫자 n을 초기화합니다.
- 정수를 문자열로 변환합니다.
- 문자열의 끝에서 반복하는 루프를 작성하십시오.
- 최대 자릿수와 색인을 찾습니다.
- 현재 자릿수가 최대 자릿수보다 작으면 시작 인덱스를 현재 인덱스로 업데이트하고 끝 인덱스를 최대 자릿수 인덱스로 업데이트합니다.
- 시작 인덱스가 -1이면 n을 반환합니다.
- 그렇지 않으면 시작 인덱스와 끝 인덱스의 숫자를 바꿉니다.
- 변환하여 정수를 반환합니다.
예시
코드를 봅시다.
#include <bits/stdc++.h> using namespace std; int getLargestNumber(int n) { int maxDigit = -1; int maxDigitIndex = -1; int startIndex = -1; int endIndex = -1; string nInStr = to_string(n); for (int i = nInStr.size() - 1; i >= 0; i--) { if (nInStr[i] > maxDigit) { maxDigit = nInStr[i]; maxDigitIndex = i; continue; } if (nInStr[i] < maxDigit) { startIndex = i; endIndex = maxDigitIndex; } } if (startIndex == -1) { return n; } swap(nInStr[startIndex], nInStr[endIndex]); return stoi(nInStr); } int main() { int n = 678; cout << getLargestNumber(n) << endl; return 0; }
출력
위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
876
결론
튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.