이 튜토리얼에서는 한 번의 스왑으로 가장 큰 수를 찾는 프로그램을 작성할 것입니다.
문제를 해결하는 단계를 살펴보겠습니다.
- 숫자 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
결론
튜토리얼에서 질문이 있는 경우 댓글 섹션에 언급하세요.