algorithm

BOJ 1174

rkawk 2022. 10. 7. 23:36
๋”๋ณด๊ธฐ

์ค„์–ด๋“œ๋Š” ์ˆ˜ ์„ฑ๊ณต

 
2 ์ดˆ 128 MB 3158 1230 1012 41.188%

๋ฌธ์ œ

์Œ์ด ์•„๋‹Œ ์ •์ˆ˜๋ฅผ ์‹ญ์ง„๋ฒ•์œผ๋กœ ํ‘œ๊ธฐํ–ˆ์„ ๋•Œ, ์™ผ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ž๋ฆฌ์ˆ˜๊ฐ€ ๊ฐ์†Œํ•  ๋•Œ, ๊ทธ ์ˆ˜๋ฅผ ์ค„์–ด๋“œ๋Š” ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 321์™€ 950์€ ์ค„์–ด๋“œ๋Š” ์ˆ˜์ด๊ณ , 322์™€ 958์€ ์•„๋‹ˆ๋‹ค.

N๋ฒˆ์งธ๋กœ ์ž‘์€ ์ค„์–ด๋“œ๋Š” ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋งŒ์•ฝ ๊ทธ๋Ÿฌํ•œ ์ˆ˜๊ฐ€ ์—†์„ ๋•Œ๋Š” -1์„ ์ถœ๋ ฅํ•œ๋‹ค. ๊ฐ€์žฅ ์ž‘์€ ์ค„์–ด๋“œ๋Š” ์ˆ˜๊ฐ€ 1๋ฒˆ์งธ ์ž‘์€ ์ค„์–ด๋“œ๋Š” ์ˆ˜์ด๋‹ค.

์ž…๋ ฅ

N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— N๋ฒˆ์งธ ์ž‘์€ ์ค„์–ด๋“œ๋Š” ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1 ๋ณต์‚ฌ

1

์˜ˆ์ œ ์ถœ๋ ฅ 1 ๋ณต์‚ฌ

0

์˜ˆ์ œ ์ž…๋ ฅ 2 ๋ณต์‚ฌ

19

์˜ˆ์ œ ์ถœ๋ ฅ 2 ๋ณต์‚ฌ

42

์˜ˆ์ œ ์ž…๋ ฅ 3 ๋ณต์‚ฌ

500000

์˜ˆ์ œ ์ถœ๋ ฅ 3 ๋ณต์‚ฌ

-1โ€‹

0~9๊ฐœ์˜ ์นด๋“œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ์„๋•Œ, ์ด ์นด๋“œ๋ฅผ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ํŠน์ •ํ•œ ๊ฐœ์ˆ˜๋งŒํผ ๋ฝ‘๋Š”, ์กฐํ•ฉ์˜ ๋ฌธ์ œ์ด๋‹ค.

๋ชจ๋“  ๋…ธ๋“œ(0~9)๋Š” 1 ์•„๋‹ˆ๋ฉด 0์ด ๋  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ฒฝ์šฐ์˜์ˆ˜๋Š” 1024๊ฐœ ์ด์ง€๋งŒ, 0๊ฐœ๋ฅผ ๋ฝ‘๋Š” ๊ฒฝ์šฐ์˜์ˆ˜๋Š” ์ด ๋ฌธ์ œ์—์„  ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— -1๊ฐœ๋ฅผ ํ•ด์ฃผ์–ด ์ด 1023๊ฐœ์ด๋‹ค.

 

๊ฐœ์ˆ˜๊ฐ€ ์ ์œผ๋ฏ€๋กœ ๋ชจ๋“  ์กฐํ•ฉ์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ „๋ถ€ ๊ตฌํ•ด, ์ •๋ ฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;
int N, arr[10];
vector<long long>v;
void func(int n, int l, int k){
    if(n == k){
        long long ans=0;
        int p = 0;
        for(int idx=0; idx<10; idx++){
            if(arr[idx]){
                ans += idx * pow(10, p);
                p += 1;
            }
        }
        v.push_back(ans);
        return;
    }
    for(int i=l; i<10; i++){
        if(arr[i]) continue;
        arr[i] = 1;
        func(n+1, i, k);
        arr[i] = 0;
    }
}
int main(){
    cin>>N;
    if(N > 1023){
        cout<<-1;
        return 0;
    }
    for(int i=1; i<=10; i++)
        func(0,0,i);
    sort(v.begin(), v.end());
    cout<<v[N-1];
}

 

'algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

BOJ 20056  (0) 2022.10.09
BOJ 1826  (0) 2022.10.07
BOJ 14502  (0) 2022.10.07
BOJ 9252  (1) 2022.10.05
BOJ 24524  (1) 2022.10.05