본문 바로가기
  • 실행력이 모든걸 결정한다
Algorithm/기타 알고리즘

[n진수] n진수 게임 - 2018 KAKAO BLIND RECRUITMENT

by 김코더 김주역 2022. 5. 31.
반응형

해결 방법

10진수 i를 n진수로 변환한 값을 문자열 형태로 반환하는 converter함수를 만들어 두었다.

16진수 이하의 변환은 16진수 기준으로 변환해도 모두 적용되므로, 2진수든 8진수든 모두 16진수 변환 방법을 써도 된다.

0부터 n진수로 변환한 값들을 임의의 문자열에 계속 추가해두면 되는데, 최종 문자열의 길이는 t*m이면 충분하다. 이제 이 문자열을 참고하여 튜브 차례에 해당하는 문자들을 추출하면 문제가 해결된다.

 

 

소스코드

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

char hexa[17] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

string converter(int n, int i){
    if(i==0) return "0";
    string hexastr="";
    int r;
    while(i>0){
        r=i%n; //나머지
        i/=n; //몫
        hexastr+=hexa[r];
    }
    reverse(hexastr.begin(), hexastr.end());
    return hexastr;
}

string solution(int n, int t, int m, int p) {
    string answer = "";
    string bitstr = "";
    int num=0;
    while(bitstr.length()<=t*m){
        bitstr+=converter(n, num);
        num++;
    }
    for(int i=0;i<t;i++) answer+=bitstr[m*i+p-1];
    return answer;
}

 

테스트케이스 26개 모두 정답

반응형

댓글