[C++ / 백준 2529번] 부등호

2025. 1. 13. 16:56·프로그래밍 공부/백준 (C++)

 

 

재귀, 백트래킹 을 이용하여 풀이했다.

next_permutation을 사용하면 더 빨리 풀 수 있을 것 같다. 시간 복잡도가 다르기 때문에. 

범위는 항상 조심하자.

 

 

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

int k[12];
long long MinNum = 9999999999;
long long MaxNum = -1;

vector <int> PermuVec;

int visited[10] = { false };

int N;

bool checkCondition(vector<int> inputVec)
{
    for (int i = 0; i < N; i++)
    {
        if (k[i] == 0 && PermuVec[i] > PermuVec[i+1])
        {
            return false;
        }
        if (k[i] == 1 && PermuVec[i] < PermuVec[i + 1])
        {
            return false;
        }
    }

    return true;
}


void recur(int depth)
{
    if (depth == N + 1)
    {
        /*
        for (auto i : PermuVec)
        {
            cout << i << " ";
        }
        cout << '\n';
        */

        long long tmp = 0;

        for (auto i : PermuVec)
        {
            tmp = tmp*10 + i;
            
        }


        if (checkCondition(PermuVec))
        {
            MaxNum = max(MaxNum, tmp);
            
            MinNum = min(MinNum, tmp);
        }


        return;
    }

    for (int i = 0; i <= 9; i++)
    {
        if(!visited[i])
        { 
            PermuVec.push_back(i);
            visited[i] = true;
           
            recur(depth + 1);
            
            PermuVec.pop_back();
            visited[i] = false;
        }
    }


}

int main() 
{
    
    cin >> N;

    char input;

    for (int i = 0; i < N; i++)
    {
        cin >> input;

        if (input == '<')
        {
            k[i] = 0;
        }
        else
        {
            k[i] = 1;
        }
    }


    recur(0);

    if (to_string(MaxNum).length() != N + 1) cout << "0" << MaxNum;
    else cout << MaxNum;

    cout << '\n';

    if (to_string(MinNum).length() != N + 1) cout << "0" << MinNum;
    else cout << MinNum;



    return 0;
}

 

 

 

 

 

'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글

[C++ / 백준 11723번] 집합  (0) 2025.02.18
[C++ / 백준 1248번] Guess(맞춰봐)  (0) 2025.02.05
[C++ / 백준 14889번] (재귀 / 비트마스크) 스타트와 링크  (0) 2025.01.07
[C++ / 백준 1759번] 암호 만들기  (0) 2025.01.05
[C++ / 백준 10972번] 다음 순열  (0) 2024.12.29
'프로그래밍 공부/백준 (C++)' 카테고리의 다른 글
  • [C++ / 백준 11723번] 집합
  • [C++ / 백준 1248번] Guess(맞춰봐)
  • [C++ / 백준 14889번] (재귀 / 비트마스크) 스타트와 링크
  • [C++ / 백준 1759번] 암호 만들기
Rocketbabydolls
Rocketbabydolls
Rocketbabydolls
  • Rocketbabydolls
    With The Lights Out
    Rocketbabydolls
  • 전체
    오늘
    어제
    • 전체글 (183)
      • 프로그래밍 공부 (117)
        • C (16)
        • Jumping into C++ (9)
        • MFC (C++) (1)
        • 자료구조 (1)
        • 알고리즘 (1)
        • 백준 (C++) (74)
        • 핸즈온 머신러닝 2판 (6)
        • Unseen 3기 준비 (4)
        • 원티드 포텐업 게임 개발자 양성과정 2기 (4)
      • 언리얼엔진5 (62)
        • [Part1] 이득우의 언리얼 프로그래밍 (12)
        • [Part2] 이득우의 언리얼 프로그래밍 (2)
        • [Part2 복습] 이득우의 언리얼 프로그래밍 (3)
        • [Part3] 이득우의 언리얼 프로그래밍 (14)
        • [Part4] 이득우의 언리얼 프로그래밍 (0)
        • FPS 게임 1인 프로젝트 (6)
        • 각종 지식 (10)
        • 블루프린트 Paper2D 로 게임 만들기 (14)
        • 팀 프로젝트 (1)
      • 일상 (1)
      • ETC (1)
        • 맥북 (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      언리얼엔진5
      언리얼엔진5 fps 프로젝트
      언리얼엔진 옵저버 패턴
      티스토리챌린지
      실전 C프로그래밍
      언리얼엔진 중재자 패턴
      C언어 실습문제
      언리얼엔진
      실전C프로그래밍
      실전C프로그래밍 나중채
      실전 C 프로그래밍
      c++ 17298
      언리얼엔진 디자인 패턴
      c언어
      핸즈온 머신러닝 2판
      실전C프로그래밍 실습문제
      핸즈온 머신러닝
      실전 C프로그래밍 실습문제
      실전 C프로그래밍 나중채
      오블완
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    Rocketbabydolls
    [C++ / 백준 2529번] 부등호
    상단으로

    티스토리툴바