본문 바로가기

알고리즘/백준[C++]

백준16943 숫자 재배치 c++

728x90
반응형

https://www.acmicpc.net/problem/16943

 

16943번: 숫자 재배치

두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다.  가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0

www.acmicpc.net

 

 

 

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int ans = -1;
string A, B;

int main()
{
    cin >> A >> B;

    sort(A.begin(), A.end()); // next_permutation을 할때는 무조건 sort가 먼저 와야한다.
    do
    {
        if (A[0] == '0')
            continue;
        if (stoi(A) < stoi(B))
            ans = max(ans, stoi(A));
    } while (next_permutation(A.begin(), A.end()));
    std::cout << ans << endl;
}

 

대놓고 순열문제. 주의할점은 0을 포함하는경우와 next_permutation stl을 이용할때에는 sort를 먼저 해주어야 한다는점.

728x90
반응형

'알고리즘 > 백준[C++]' 카테고리의 다른 글

백준2178 숫자 재배치 c++  (0) 2023.06.26
백준 2234 성곽 c++  (0) 2022.07.27
백준 1057 토너먼트 c++  (0) 2022.07.27
백준 24444 알고리즘수업 너비우선탐색1 c++  (0) 2022.07.27
백준_2022_사다리_c++  (0) 2022.07.27