n진수 게임

2024. 6. 4. 17:17알고리즘/카카오

2018 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/17687

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


우선 전체 숫자의 범위를 구한다. 이 범위는 게임에 참여하는 전체 학생 수 * 튜브가 말해야하는 숫자의 갯수만큼의 범위를 최소한으로 가질 것이다. 만약 튜브가 3개의 숫자를 말해야되고 전체 학생 수가 5명이라면 게임은 최소 0부터 15가 될 때까지는 진행해야한다.

 

그리고 전체 숫자 범위의 10진수를 N진법으로 변환한다. 이때, 변환한 N진수의 문자열 길이가 2이상이면 하나씩 잘라서 str에 저장한다. 101 이면 1, 0, 1 이렇게 하나씩 잘라서 저장한다.

 

str을 게임에 참여하는 전체 학생 수로 잘라서 그 중에 튜브가 말해야하는 순번에 존재하는 문자를 ret에 저장한다.

이때 튜브가 말해야하는 숫자의 갯수를 만족했다면 루프문에서 빠져나온다.

 

처음에 풀 때는 어려웠는데 두 번째 푸니까 쉽게 풀렸다. 다행이다.

function solution(n, t, m, p) {
    let ret = "";
    let str = "";
    let i = 0;
    let cnt = t * m;
    while(cnt > 0){
       let char = i.toString(n).toUpperCase(); // 16진수인 경우 알파벳이 소문자로 표기되므로 대문자로 변환
       char.split("").forEach((elem)=> str += elem);
       cnt -= 1;
       i += 1; 
    }
    for(let i = 0; i < str.length; i += m){
        if(ret.length === t) break;
        let subStr = str.substring(i, i + m);
        ret += subStr[p - 1];
    }
    
    return ret;
}

 

 

 

 

'알고리즘 > 카카오' 카테고리의 다른 글

❌파일명 정렬(왜 틀린지 이유를 모르겠음)  (0) 2024.06.04
튜플  (0) 2024.06.01
키패드 누르기  (0) 2024.06.01
수식 최대화  (0) 2024.06.01
메뉴 리뉴얼  (0) 2024.05.30