본문 바로가기

알고리즘 문제풀이

[프로그래머스] 2018 카카오 공채 - n진수 게임

오늘 푼 문제

 

1. n진수 게임/ Lv. 2 / 시간 : 57분

programmers.co.kr/learn/courses/30/lessons/17687

 

코딩테스트 연습 - [3차] n진수 게임

N진수 게임 튜브가 활동하는 코딩 동아리에서는 전통적으로 해오는 게임이 있다. 이 게임은 여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는 게임인데, 규칙은 다음과 같다. 숫자를 0

programmers.co.kr

1. 진법 변환 직접 구현

function solution(n, t, m, p) {
    var answer = '';
    let fullStr = "";
    let num = 0;
    while(fullStr.length<t*m){
        let str = convert(num,n);
        fullStr+=str;
        num++;
    }
    answer = fullStr.split('').filter((v,i)=>(i+1-p)%m===0).join('').slice(0,t);
    return answer;
}

function convert(n,base){
    let answer = [];
    let temp = {10:'A',11:'B',12:'C',13:'D',14:'E',15:'F'}
    while(true){
        let t = n%base;
        n = Math.floor(n/base);
        answer.unshift(t);
        if(n<base) break;
    }
    if(n) answer.unshift(n);
    return base>10? answer.reduce((acc,cur)=>{
                        acc+=(temp[cur]||cur)
                        return acc;
                    },"") : answer.join('');
}

 

 

2. toString 사용

function solution(n, t, m, p) {
    var answer = '';
    let fullStr = "";
    let num = 0;
    while(fullStr.length<t*m){
        let str = num.toString(n).toUpperCase();
        fullStr+=str;
        num++;
    }
    answer = fullStr.split('').filter((v,i)=>(i+1-p)%m===0).join('').slice(0,t);
    return answer;
}