알고리즘/BOJ

백준 5904번 Moo 게임

꾸준함. 2019. 1. 21. 17:06

문제 링크입니다: https://www.acmicpc.net/problem/5904


규칙만 잘 따라서 재귀호출하면 되는 문제였습니다.

1. S(k-1)

2. 'm' + (k+2) * 'o'

3. S(k-1)


#include <iostream>

using namespace std;

 

int N;

int idx;

 

void moo(int n)

{

        if (n == 1)

        {

                 if (idx + 1 == N)

                 {

                         cout << "m\n";

                         exit(0);

                 }

                 else if (idx + 2 == N || idx + 3 == N)

                 {

                         cout << "o\n";

                         exit(0);

                 }

                 idx += 3;

                 return;

        }

 

        //규칙

        //1. moo(n-1)

        //2. mo....o

        //3. moo(n-1)

        moo(n - 1);

        if (idx + 1 == N)

        {

                 cout << "m\n";

                 exit(0);

        }

        idx++;

        for (int i = 0; i <= n; i++)

        {

                 if (idx + 1 == N)

                 {

                         cout << "o\n";

                         exit(0);

                 }

                 idx++;

        }

        moo(n - 1);

}

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        cin >> N;

 

        moo(30); //2^30 > 1,000,000,000

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 9207번 페그 솔리테어  (0) 2019.01.22
백준 5988번 홀수일까 짝수일까  (0) 2019.01.22
백준 10162번 전자레인지  (0) 2019.01.20
백준 14956번 Philosopher's Walk  (2) 2019.01.20
백준 16720번 BAZE RUNNER  (0) 2019.01.20