C++:: 프로그래머스 < [3차] n진수 게임 >

jahlee·2023년 7월 11일
0

프로그래머스_Lv.2

목록 보기
74/106
post-thumbnail

t길이만큼의 미리 말한 문자열을 구하면 되는 문제이다. n진수로 변환한 수를 문자열에 계속 더해주고 거기서 순서에 맞게 answer에 추가해주면 된다. 크게 어렵지 않은 문제이다.

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

string s = "0123456789ABCDEF";

string changedNum(int n, int num) {// n진수로 변환하여 string으로 반환
    string res = "";
    if (num == 0) return "0";
    while (num) {
        res = s[num%n] + res;
        num /= n;
    }
    return res;
}

string solution(int n, int t, int m, int p) {
    string answer = "";
    string str = "";

    int num = 0;
    // m명이 돌아가면서 말할때 t만큼의 문자를 미리 생각하려면 최소 t*m보다는 긴 문자열이어야 한다.
    while (str.size() <= t * m)
        str += changedNum(n, num++);
    num = p-1;// 시작 순서
    while (answer.size() < t) {// t개 고를때 까지
        answer += str[num];// 순서에 맞게 고르고
        num += m;// 다음 순서를 구한다.
    }
    return answer;
}

0개의 댓글