2529_부등호

이준혁·3일 전

예제 입력 1
2
< >

예제 출력 1
897
021

예제 입력 2
9

< < < > > > < <

예제 출력 2
9567843012
1023765489

공부노트

  • bool check(char big_small,int f_num,int sec_num)\
    처음에는 해당 부분에서 bool check 하는 부분이 어떻게 체크를 해야하는지 몰랐음
    그래서 보니까 bool로 return을 해야하는것으로 bool로 바꾸고 진짜 이 기호가 이 숫자가 들어가도 된다 안된다를 true false로 한다는 것에서 신선하게 이해개 되었음

  • results.push_back(num);
    처음에 전체 코드가 완성되면 해당 답에 push를 하여 답을 넣어서 출력하는 식이었음

  • 코드의 핵심 알고리즘
    if(visit[i]) continue;

        else if(depth==0)
        {
            visit[i]=true;
            check_num(depth+1,num+to_string(i));
            visit[i]=false;
        }
        else
        {
            int change_int = num[depth-1]-'0';
            if(check(equality[depth-1],change_int,i))
            {
            visit[i]=true;
            check_num(depth+1,num+to_string(i));
            visit[i]=false;
            }
        }

    이부분에서

코드

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

using namespace std;

int input_value;

char equality[10];

bool visit[10];

vector<string> results;

bool check(char big_small,int f_num,int sec_num)
{
    if(big_small=='<')
    {
        return f_num < sec_num;
    }
        if(big_small=='>')
    {
        return f_num > sec_num;
    }
    return false;
} 

void check_num(int depth, string num)
{
    if(depth==input_value+1)
    {
        results.push_back(num);
        return;
    }

    for(int i = 0;i<=9;i++)
    {
        if(visit[i]) continue;

        else if(depth==0)
        {
            visit[i]=true;
            check_num(depth+1,num+to_string(i));
            visit[i]=false;
        }
        else
        {
            int change_int = num[depth-1]-'0';
            if(check(equality[depth-1],change_int,i))
            {
            visit[i]=true;
            check_num(depth+1,num+to_string(i));
            visit[i]=false;
            }
        }
    }
}

int main()
{   
    cin>>input_value;

    for(int i=0 ;i<input_value;i++)
    {
        cin>>equality[i];
    }

    check_num(0,"");
    
    sort(results.begin(),results.end());
    cout<<results.back()<<"\n";

    cout<<results.front()<<"\n";    

}


profile
#자기공부 #틀린것도많음 #자기개발 여러분 인생이 힘들다 하더라도 그것을 깨는 순간 큰 희열감으로 옵니다~

0개의 댓글