Algorithm/๋ฐฑ์ค€(BOJ)

[๋ฐฑ์ค€ / C++] 6603๋ฒˆ - "๋กœ๋˜" ํ’€์ด

meeeeejin 2020. 6. 26. 02:18

๋ฌธ์ œ ์„ค๋ช…

 

๋…์ผ ๋กœ๋˜๋Š” {1, 2, ..., 49}์—์„œ ์ˆ˜ 6๊ฐœ๋ฅผ ๊ณ ๋ฅธ๋‹ค.

 

๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์ „๋žต์€ 49๊ฐ€์ง€ ์ˆ˜ ์ค‘ k(k>6)๊ฐœ์˜ ์ˆ˜๋ฅผ ๊ณจ๋ผ ์ง‘ํ•ฉ S๋ฅผ ๋งŒ๋“  ๋‹ค์Œ ๊ทธ ์ˆ˜๋งŒ ๊ฐ€์ง€๊ณ  ๋ฒˆํ˜ธ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, k=8, S={1,2,3,5,8,13,21,34}์ธ ๊ฒฝ์šฐ ์ด ์ง‘ํ•ฉ S์—์„œ ์ˆ˜๋ฅผ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ์ด 28๊ฐ€์ง€์ด๋‹ค. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34])

 

์ง‘ํ•ฉ S์™€ k๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ˆ˜๋ฅผ ๊ณ ๋ฅด๋Š” ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

๋ฌธ์ œ ์ฃผ์†Œ: https://www.acmicpc.net/problem/6603

 

 

 

 

 

๋ฌธ์ œ ํ’€์ด

 

k๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ–๋Š” ์ง‘ํ•ฉ S์—์„œ 6๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ณ ๋ฅด๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. ์กฐํ•ฉ(n๊ฐœ์˜ ์›์†Œ ์ค‘ k๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•)์„ ์ด์šฉํ•˜๋ฉด ๋˜๋Š”๋ฐ ์กฐํ•ฉ์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ๋งํฌ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

https://mjmjmj98.tistory.com/38

 

[C++ / Algorithm] ์ˆœ์—ด(next_permutation) ์‚ฌ์šฉ ๋ฐฉ๋ฒ•๊ณผ ์กฐํ•ฉ(Combination) ๊ตฌํ•˜๊ธฐ

์ˆœ์—ด์„ ๊ตฌํ•˜๋Š” next_permutation ํ•จ์ˆ˜ ์ˆœ์—ด ์ˆ˜ํ•™์ ์œผ๋กœ ์ˆœ์—ด(permutation)์ด๋ž€ ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์˜ ์›์†Œ์—์„œ r๊ฐœ๋ฅผ ๋ฝ‘์•„ ํ•œ ์ค„๋กœ ์„ธ์šฐ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์›์†Œ๋ฅผ ํ•œ ์ค„๋กœ ์„ธ์šฐ๊ธฐ ๋•Œ๋ฌธ์— ์›์†Œ์˜ ์กฐํ•ฉ์ด

mjmjmj98.tistory.com

 

 

์†Œ์Šค์ฝ”๋“œ

 

// ๋ฐฑ์ค€ 6603: ๋กœ๋˜
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int k;
vector<int> s(14);
 
int main() {
    while (true) {
        cin >> k;
        if (k == 0)    // ์ž…๋ ฅ ์ข…๋ฃŒ
            break;
 
        // ๋ฐฐ์—ด s ์ดˆ๊ธฐํ™”, ์กฐํ•ฉ ํƒ์ƒ‰์— ์‚ฌ์šฉํ•  v ์ดˆ๊ธฐํ™”
        for (int i = 0; i < k; ++i)
            cin >> s[i];
        vector<int> v(61);
        for (int i = 0; i < k - 6++i)
            v.push_back(0);
 
        // ๋ชจ๋“  ์กฐํ•ฉ ํƒ์ƒ‰
        do {
            for (int i = 0; i < v.size(); ++i)
                if (v[i] == 1)
                    cout << s[i] << ' ';
            cout << endl;
        } while (prev_permutation(v.begin(), v.end()));
 
        cout << endl;
    }
 
    return 0;
}
cs

 

 

 

 

๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ˆ˜์ •ํ•  ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค :)

 

 

728x90