๐Ÿ• Baaaaaarking/0x0B๊ฐ• - ์žฌ๊ท€

[BOJ S1][C++] ๋ฐฑ์ค€ 11729๋ฒˆ: ํ•˜๋…ธ์ด ํƒ‘ ์ด๋™ ์ˆœ์„œ

์„ ๋‹ฌ 2022. 5. 11. 07:19
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/11729

 

11729๋ฒˆ: ํ•˜๋…ธ์ด ํƒ‘ ์ด๋™ ์ˆœ์„œ

์„ธ ๊ฐœ์˜ ์žฅ๋Œ€๊ฐ€ ์žˆ๊ณ  ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—๋Š” ๋ฐ˜๊ฒฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์˜ ์›ํŒ์ด ์Œ“์—ฌ ์žˆ๋‹ค. ๊ฐ ์›ํŒ์€ ๋ฐ˜๊ฒฝ์ด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ์žˆ๋‹ค. ์ด์ œ ์ˆ˜๋„์Šน๋“ค์ด ๋‹ค์Œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—์„œ ์„ธ ๋ฒˆ์งธ ์žฅ๋Œ€๋กœ

www.acmicpc.net

 

๋ฌธ์ œ

์„ธ ๊ฐœ์˜ ์žฅ๋Œ€๊ฐ€ ์žˆ๊ณ  ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—๋Š” ๋ฐ˜๊ฒฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์˜ ์›ํŒ์ด ์Œ“์—ฌ ์žˆ๋‹ค. ๊ฐ ์›ํŒ์€ ๋ฐ˜๊ฒฝ์ด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ์žˆ๋‹ค. ์ด์ œ ์ˆ˜๋„์Šน๋“ค์ด ๋‹ค์Œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—์„œ ์„ธ ๋ฒˆ์งธ ์žฅ๋Œ€๋กœ ์˜ฎ๊ธฐ๋ ค ํ•œ๋‹ค.

  1. ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์›ํŒ๋งŒ์„ ๋‹ค๋ฅธ ํƒ‘์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค.
  2. ์Œ“์•„ ๋†“์€ ์›ํŒ์€ ํ•ญ์ƒ ์œ„์˜ ๊ฒƒ์ด ์•„๋ž˜์˜ ๊ฒƒ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค.

์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ด๋™ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ๋‹จ, ์ด๋™ ํšŸ์ˆ˜๋Š” ์ตœ์†Œ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์€ ์›ํŒ์ด 5๊ฐœ์ธ ๊ฒฝ์šฐ์˜ ์˜ˆ์‹œ์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์— ์Œ“์ธ ์›ํŒ์˜ ๊ฐœ์ˆ˜ N (1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์˜ฎ๊ธด ํšŸ์ˆ˜ K๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ ์ˆ˜ํ–‰ ๊ณผ์ •์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ K๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ๋‘ ์ •์ˆ˜ A B๋ฅผ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ถœ๋ ฅํ•˜๋Š”๋ฐ, ์ด๋Š” A๋ฒˆ์งธ ํƒ‘์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์›ํŒ์„ B๋ฒˆ์งธ ํƒ‘์˜ ๊ฐ€์žฅ ์œ„๋กœ ์˜ฎ๊ธด๋‹ค๋Š” ๋œป์ด๋‹ค.

 

ํ’€์ด

์ฃผ์„์œผ๋กœ.. ์„ค๋ช…...

์žฌ๊ท€ํ•จ์ˆ˜... ๋Œ€ํ‘œ๋ฌธ์ œ..

// Authored by : seondal
// Co-authored by : -

//#include <bits/stdc++.h>
#include <iostream>
#include <cmath>

using namespace std;

// a๊ธฐ๋‘ฅ์—์„œ b๊ธฐ๋‘ฅ์œผ๋กœ ์›ํŒ n๊ฐœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ • ์ถœ๋ ฅ
void func(int a, int b, int n) {
    
    // ์›ํŒ ๊ฐฏ์ˆ˜ ํ•œ๊ฐœ ๋‚จ์œผ๋ฉด ์žฌ๊ท€ ์ข…๋ฃŒ
    if(n==1) {
        cout << a << " " << b << "\n";
        return;
    }
    
    int c = 6-a-b;                  // a์™€ b๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๊ธฐ๋‘ฅ์˜ ๋ฒˆํ˜ธ
    
    func(a, c, n-1);                // (1) ์›ํŒ n-1๊ฐœ a->c
    cout << a << " " << b << "\n";  // (2) n๋ฒˆ ์›ํŒ a->b
    func(c, b, n-1);                // (3) ์›ํŒ n-1๊ฐœ c->b
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    int n;
    cin >> n;
    
    int count = pow(2, n) - 1;
    cout << count << "\n";  // ์ด ์ด๋™ ํšŸ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์•„์š” (์ผ๋ฐ˜ํ•ญ์—ฐ์‚ฐ)
    
    func(1,3,n);            // ๊ณผ์ •์„ ์ถœ๋ ฅํ•ด๋ณด์•„์š”
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•