개발 로그/알고리즘
1850. Minimum Adjacent Swaps to Reach the Kth Smallest Number.cpp
CyberSoak
2021. 10. 17. 14:21
🔑
1. next_permutation STL을 활용하여, 주어진 수 다음의 최소값을 찾는다.
2. swap 횟수를 찾는다.
1) 주어진 값과, wonderful number값 두개를 일렬로 놓는다.
2) 각 자리수를 비교( i , j ) 하며, 같은 값을 찾을 때 까지, 주어진 값의 index를 이동( j-- )시킨다.
3) 이동된 index에 해당하는 값( org[j] )이, wonderful[i]와 같을 때 까지, swap한다. swap횟수만큼 res++
class Solution {
public:
int getMinSwaps(string num, int k) {
int res =0;
string org = num;
for(int i =0; i<k;i++){
next_permutation(num.begin(), num.end());
}
for(int i =org.size()-1; i>=0; i--){
int j = i;
while(num[i]!=org[j])j--;
for(int l = j; l<i; l++){
swap(org[l],org[l+1]);
res++;
}
}
return res;
}
};