포스트

[ 프로그래머스 ] [3차] N진수 게임

문제


https://school.programmers.co.kr/learn/courses/30/lessons/17687

풀이


진법 n, 미리 구할 숫자의 갯수 t, 게임에 참가하는 인원 m, 튜브의 순서 p를 입력받아, 최대 나올 수 있는 숫자 t x m 만큼의 n진법 숫자를 구하고, p에 해당하는 문자를 return한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <string>
#include <vector>

using namespace std;

string cal(int d, int n) 
{
    string res = "";
    char code[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
    while (d / n != 0) {
        res = code[d % n] + res;
        d /= n;
    }
    res = code[d % n] + res;
    return res;
}
string solution(int n, int t, int m, int p)
{
    string answer = "";
    string tmp = "";
    for (int i = 0; i < t * m; i++) 
    {
        tmp += cal(i, n);
    }
    int cnt = 0;

    for (int i = p - 1; i < tmp.size(); i += m) 
    {
        answer += tmp[i];
        if (cnt + 1 == t) break;
        cnt += 1;
    }
    return answer;
}

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.