[C++][백준 18511] 큰 수 구성하기

PublicMinsu·2024년 1월 19일

문제

접근 방법

K 원소의 개수가 3개밖에 안된다.

모두 확인해 주더라도 시간의 문제가 없다.

코드

#include <iostream>
#include <vector>
using namespace std;
int N, lenK, answer;
vector<int> K;
void recur(int num)
{
    if (N < num) // N보다 큰 경우
    {
        return;
    }
    answer = max(answer, num);

    num *= 10; // 자리 늘리기

    for (int i = 0; i < lenK; ++i)
    {
        recur(num + K[i]);
    }
}
int main()
{
    ios::sync_with_stdio(0), cin.tie(0);

    cin >> N >> lenK;
    K = vector<int>(lenK);
    for (int &k : K)
    {
        cin >> k;
    }

    recur(0);
    cout << answer;
    return 0;
}

풀이

K의 원소의 개수가 적어서 재귀를 활용하여 모든 경우를 확인해 주었다.

만약 N을 넘어간다면 사용할 수 없는 값이므로 무시해 준다.

profile
연락 : publicminsu@naver.com

0개의 댓글