알고리즘/codewars

codewars: Playing on a chessboard

꾸준함. 2018. 2. 1. 01:19

문제 링크입니다: http://www.codewars.com/kata/55ab4f980f2d576c070000f4/train/cpp

직접 그려가면서 하면 정말 간단한 문제입니다.


이런식으로 규칙이 있기 때문입니다.


/*

8*8 체스보드에서 친구와 게임을 하고 있다.

첫번째 열에는 1/2, 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9

두번째 열에는 1/3, 2/4, 3/5, 4/6, 5/7, 6/8, 7/9, 8/10

세번재 열에는 1/4, 2/5, 3/6, 4/7, 5/8, 6/9, 7/10, 8/11

마지막 열에는 1/9, 2/10, 3/11, 4/12, 5/13, 6/14, 7/15, 8/16

 

체스보드에 모든 숫자가 입력되었다면 게임 참가자들은 모두 동전을 던진다.

앞면이 나오면 체스보드에 적혀있는 합만큼 돈을 받는다.

n이 주어졌을 때 n*n 체스보드에서 게임을 진행한다고 한다.

이 때 받아야하는 돈을 출력하시오

*/

#include <iostream>

#include <string>

using namespace std;

 

class Suite2

{

public:

        static string game(unsigned long long n);

};

 

string Suite2::game(unsigned long long n)

{

        string result;

        long long square = n*n;

        result += "[";

        if (n % 2) //홀수면 분수

        {

               result += to_string(square);

               result += ", ";

               result += to_string(2);

        }

        else //짝수면 정수

               result += to_string(square / 2);

        result += "]";

        return result;

}

 

int main(void)

{

        cout << Suite2::game(0) << endl;

        cout << Suite2::game(1) << endl;

        cout << Suite2::game(5014) << endl;

        return 0;

}


개발환경:Visual Studio 2017


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

반응형