카카오 신입 공채 3차 코딩 테스트 풀이 - 1번문제

2018-06-04 03:05:43 | 조회수 3549



오프라인 테스트로 진행된 3차 코딩 테스트! (2차는 다른 유형의 시험이었기에 생략합니다.)


5문제가 출제되었으며, 3문제 이상을 맞춘 경우 통과였다고 합니다. 블로그에 따르면 1차와 난이도는 비슷하지만 조금 더 생각할 여지를 두는 문제들이 많았다고 합니다. 또 오프라인으로 푸는 문제였기 때문에 모르는 부분에 대한 검색이 불가능하여 체감 난이도는 더욱 올라갔을 거라고 생각됩니다. 이제부터 시작하겠습니다.


문제를 요약하면 진법 변환을 통해 얻어진 수를 m명이 말하는데, 그 길이가 2글자 이상인 경우 1글자씩 끊어서 말을 해야됩니다. 그 때 내가 말할 단어의 순서를 출력하는 문제입니다. 여기서 내가 미리 구해야 될 숫자가 1000개 이고, 플레이어는 100명이므로 아무리 값이 크다고 해도 내가 구해야될 숫자의 총 합 길이는 $1000 * 100 = 10^5$ 개를 넘지 않습니다. 따라서, 정말로 간단하게 모든 숫자를 길이가 $t*m$ 길이만큼 구한 다음, 앞에서부터 하나씩 골라 리턴하면 되는 간단한 문제입니다.


string change(int n, int no)

{

    string c[] = { "0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F" }, ret = "";


    while (no)

    {

        int v = no % n;

        ret = c[v] + ret;

        no /= n;

    }

    return ret;

}

string solve(int n,int t,int m,int p)

{

    p--;

    string chk = "0";

    for (int i = 1;;i++)

    {

        chk += change(n, i);

        if (chk.length() >= m*t) break;

    }

    string ans = "";

    for (int i = 0; i < t; i++, p += m) ans += chk[p];

    return ans;

}


카카오 신입 공채 3차 코딩 테스트 풀이 - 1번문제 - 알고리즘닷컴
32 개의 글