민팽로그

[3차] n진수 게임 본문

PS/프로그래머스

[3차] n진수 게임

민팽 2022. 9. 16. 19:27

게임을 진행하는 동안 사람들이 말하게 되는 숫자들의 총 갯수는 최소 m*(t - 1) + p개임. 따라서 m*t 길이 까지만 계산하면 될 것 같음.

0부터 시작하여 연속되는 n진수 문자열을 길이 m*t정도까지 구한 후 p 순서의 사람이 말하게 될 인덱스를 찾아 answer에 넣어주는 식으로 생각함.

#include <string>
#include <vector>
#include <map>
using namespace std;

map<int, char> mm = {{10, 'A'}, {11, 'B'}, {12, 'C'}, 
                     {13, 'D'}, {14, 'E'}, {15, 'F'}};

string solution(int n, int t, int m, int p) {
    string answer = "";
    
    string res = "0";
    for(int i = 1; res.size() < m * t ;i++) {
        string tmp = "";
        int r = i;
        while(r > 0) {
            int rest = r % n;
            if(mm.find(rest) != mm.end()) tmp = mm[rest] + tmp;
            else {
                tmp = to_string(rest) + tmp;
            }
            r /= n;
        }
        res += tmp;
        tmp.clear();
    }
    
    for(int i = p - 1; i < m * t; i += m) {
        answer += res[i];
    }
    return answer;
}

 

Comments