[Programmers] n진수 게임

김민석·2021년 10월 5일
0

프로그래머스

목록 보기
19/30

간단한 진수 변환 문제이다.

16진수 까지 있기 때문에 10이 넘어가는 것들은 A부터 되도록 해 줘야 한다.

문자열의 길이는 m명이 t번 반복할 수 있을 만큼만 있으면 되므로 mxt 만큼으로 해 준다.

그리고 본인의 차례는 p번째가 m명마다 돌아오므로 p + m(n-1)이 된다.

코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

string change(int num, int n){
    string str = "";
    while(1){
        if(num == 0)
            break;
        char c;
        if(num%n <= 9)
            c = '0' + num%n;
        else{
            c = 'A' + ((num%n)-10);
        }
        str = c + str;
        num /= n;
    }
    return str;
}

string solution(int n, int t, int m, int p) {
    string answer = "";
    string str = "";
    str += '0';
    for(int i=1;;i++){
        str += change(i,n);
        if(str.size() >= m*t)
            break;
    }
    
    for(int i=0;i<t;i++){
        answer += str[i*m + p - 1];
    }
    
    return answer;
}

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

profile
김민석의 학습 정리 블로그

0개의 댓글