๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จ‍๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ๋ฌด์Šจ ๋™์•„๋ฆฌ ์‚ฌ๋žŒ๋“ค์ด ์ด๋Ÿฌ๊ณ  ๋…ธ๋‚˜ ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์นด์นด์˜ค์— ๊ฐ€๋Š” ์‚ฌ๋žŒ๋“ค์€ ๋‹ค ์ €๋Ÿฌ๊ณ  ๋…ธ๋Š” ๊ฑธ๊นŒ์š”?...

์•„๋ฌดํŠผ, ์ €๋Š” ์ด ๋ฌธ์ œ์˜ ์˜๋„๋ฅผ ํŒŒ์•…ํ•˜๊ธฐ ํž˜๋“ค์–ด์„œ ์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‚ด์šฉ์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์ข€ ๊ฑธ๋ ธ์–ด์š”.

 

ํ•œ ์‚ฌ๋žŒ์ด ๋งํ•˜๋Š” ์ˆซ์ž๋Š” ๋ฌด์กฐ๊ฑด ํ•œ ์ž๋ฆฌ ์ˆซ์ž๋‹ค.
(์‹ญ์ง„์ˆ˜ "3" -> ์ด์ง„์ˆ˜ "11"๋กœ ๋ณ€ํ™˜ํ•˜๋”๋ผ๋„ ํ•œ ์‚ฌ๋žŒ๋งˆ๋‹ค ํ•œ ์ž๋ฆฌ์”ฉ ์ฝ๋Š”๋‹ค.)

 

 

์˜ˆ์ œ์ธ n = 2, t = 4, m = 2, p = 1๋กœ ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์‹ญ์ง„์ˆ˜ 0๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”.

// ์‹ญ์ง„์ˆ˜ : 0 1  2   3    4    5    6    7  ...
// ์ด์ง„์ˆ˜ : 0 1  10  11  100  101  110  111 ...  -> ๋‹ค ์ด์–ด๋ถ™์ด๋ฉด 011011100101110111

 

์‹ญ์ง„์ˆ˜ 0 ~7๋ฅผ ๋ณ€ํ™˜ํ•œ ์ด์ง„์ˆ˜๋“ค์„ ๋ชจ๋‘ ์ด์–ด๋ถ™์ด๋ฉด, "011011100101110111"์ด๋ผ๋Š” ๋ฌธ์ž์—ด์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์—ฌ๊ธฐ์„œ ์‚ฌ๋žŒ์˜ ์ˆ˜(m)์™€ ๋ฌธ์ œ์˜ ์ฃผ์ธ๊ณต์ธ ํŠœ๋ธŒ์˜ ์ˆœ๋ฒˆ(p), ํŠœ๋ธŒ๊ฐ€ ๋งํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜(t)๋ฅผ ํ†ตํ•ด ๊ณ„์‚ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

p๋Š” ์ตœ์†Ÿ๊ฐ’์ด 1์ด๋ฏ€๋กœ, ๋ฌธ์ž์—ด์˜ ์ฒซ ์‹œ์ž‘ ์ธ๋ฑ์Šค์ธ 0๊ณผ ๋งž์ถ”๋ ค๋ฉด p - 1์„ ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŠœ๋ธŒ์˜ ์ฒซ ์ˆœ๋ฒˆ์€ p - 1์ด๋ฏ€๋กœ, ๊ทธ ๋‹ค์Œ ์ˆœ๋ฒˆ์€ ์ด์ „ ํŠœ๋ธŒ์˜ ์ˆœ๋ฒˆ์—์„œ ์‚ฌ๋žŒ ์ˆ˜(m)๋งŒํผ ๋”ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์˜ˆ์ œ๋กœ ์˜ˆ์‹œ๋ฅผ ๋“ค๋ฉด, p = 1, m = 2, t = 4 ์ž…๋‹ˆ๋‹ค.

// p - 1 = 0, m = 2์ด๋ฏ€๋กœ ์ฒซ ๋ฒˆ์งธ ์ˆœ๋ฒˆ์ธ 0์— ์ด์–ด m์”ฉ ๋”ํ•˜๋ฉด 0, 2, 4, 6์ด ๋‚˜์˜ต๋‹ˆ๋‹ค.
// 0, 2, 4, 6์— ํ•ด๋‹นํ•˜๋Š” ์ธ๋ฑ์Šค ์œ„์— 'p' ํ‘œ์‹œ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

p p p p
011011100101110111

 // p1 = 0, p2 = 1, p3 = 1, p4 = 1 ์ด๋ฏ€๋กœ, ๋‹ค ์ด์–ด ๋ถ™์ด๋ฉด ์ •๋‹ต์ด ๋ฉ๋‹ˆ๋‹ค.
 // answer = "0111"

 

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋ฌธ์ž์—ด์—์„œ ํŠœ๋ธŒ๊ฐ€ ๋งํ•ด์•ผ ํ•  ์ˆซ์ž์˜ ์ธ๋ฑ์Šค๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๊ณ , ๋งํ•œ ํšŸ์ˆ˜๊ฐ€ t๋ฒˆ์ด ๋˜๋ฉด ์ •๋‹ต์„ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ๋ฌธ์ œ์—์„œ ์ด ๋ถ€๋ถ„์„ ์ดํ•ดํ•˜๋Š” ๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ ธ์–ด์š”... ๊ทธ๋Ÿผ, ํ•ด์•ผ ํ•  ์ผ๋“ค์€ ์ฐจ๋ก€๋Œ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”.

์‹ญ์ง„์ˆ˜๋ฅผ n์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •์€ ์‰ฌ์šฐ๋‹ˆ, ์–ด๋ ต์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

 

โœ๏ธ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

#include <string>
#include <vector>
#include <algorithm>
using namespace std;
char digitSystems[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

string GetConvertedDigit(int num, int n) {
    string result;

    while (true) {
            int quotient = num / n;
            int remainder = num % n;
            result.push_back(digitSystems[remainder]);

            if (quotient == 0)
                break;
            num = quotient;
    }

    reverse(result.begin(), result.end());
    return result;
}


string solution(int n, int t, int m, int p) {
    string numbers = "";
    string answer = "";
    int currentNum = 0;
    int myTurnCount = 0;
    int myTurnIndex = p - 1;

    while (myTurnCount < t) {
        string convertedDigit = GetConvertedDigit(currentNum, n);
        numbers += convertedDigit;

        if (myTurnIndex < numbers.length()) {
            answer += numbers[myTurnIndex];
            myTurnIndex += m;
            myTurnCount++;
        }
        currentNum++;
    }


    return answer;
}

 

 

 

728x90
๋ฐ˜์‘ํ˜•