Programers : [3차] n진수 게임

김정욱·2021년 1월 28일
0

Algorithm - 문제

목록 보기
76/249

[3차] n진수 게임

코드

#include <string>
#include <vector>
// 21:02 시작
using namespace std;
char number[18] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                   'A', 'B', 'C', 'D', 'E', 'F'};
/* 숫자 a를 n진법으로 변환 */
string change(int a, int n){
    string str="";
    if(a == 0) return to_string(0);
    while(a != 0)
    {
        char ch = number[a%n];
        a = a/n;
        str = ch + str;
    }
    return str;
}
string solution(int n, int t, int m, int p) {
    string answer = "";
    // n진법 / 미리 t개 / 총 m명 / 튜브순서 p
    int untill = m * t * 2; // 10진수 아래면 mt로 충분하지만 그 이상이 있으니 넉넉하게 2 곱함
    string entire="";
    /* 1부터 untill까지 n진법으로 변환한 string값을 entire에 더함! */
    for(int i=0;i<=untill;i++)
    {
        string tmp = change(i,n);
        entire += tmp;
    }
    /* 전체 문자열에서 튜브가 말할 t개를 answer에 삽입 */
    for(int k=p-1;k<entire.length();k += m)
    {
        char tmp = entire[k];
        answer += tmp;
        t--;
        if(t == 0) break;
    }
    return answer;
}
  • 어려워 보였지만 생각보다 쉬웠음!
  • 10진법이 넘어갈 경우 알파벳으로 치환해야하는데 number 배열을 이용하는 좋은 방법을 배움!
profile
Developer & PhotoGrapher

0개의 댓글