본문 바로가기

Programming/Programmers

[프로그래머스/C++] N진수 게임(진법 변환)

앞서 풀어본 문제들과 유사하다.

 

#include <string>
#include <vector>

using namespace std;

string convert_num(int num, int n){
    char code[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    string tmp = "";
    while(num/n!=0){
        tmp = code[num%n] + tmp;
        num = num/n; 
    }
    tmp = code[num%n]+tmp;
    return tmp;
}

string solution(int n, int t, int m, int p) {
    string answer = "";
    string tmp = "";
    
    // 임시 배열 tmp에 t*m 정도의 숫자를 담는다.
    int i=0;
    while(tmp.size()<=t*m){
        tmp += convert_num(i,n);
        i++;
    }
    
    // 임시 배열 tmp 중에서 p번째 자리에 해당하는 애들만 뽑아서 ans에 담는다.
    int cnt=0;
    for(int i=0;i<tmp.size();i++){
        if(cnt==t) break;
        if(i%m+1 == p){
            answer+= tmp[i];
            cnt++;
        }
    }

    return answer;
}