PS/Programmers

Programmers / Level 2 / [3차] n진수 게임 / JS

KimMinJun 2022. 12. 10. 22:22

< 문제 바로가기 >

 

프로그래머스

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

programmers.co.kr

 

/**
 * @param {number} n 진법
 * @param {number} t 미리 구할 숫자의 개수
 * @param {number} m 게임에 참가하는 인원
 * @param {number} p 튜브의 순서
 */
function solution(n, t, m, p) {
  let answer = '';
  let result = '';
  let num = 0;

  while (true) {
    result += num.toString(n);
    num += 1;

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

  for (let i = p - 1; i < m * t; i += m) {
    answer += result[i];
  }

  answer = result.toUpperCase();
  return answer;
}

약간(?)은 수학적인 사고방식이 필요한 문제였다.

반복을 총 몇번할지 범위를 잘 잡아주기만 하면 그다지 어려운 문제는 아니었던 것 같다.

 

미리 구할 숫자의 개수가 t개이고 게임에 참가하는 인원이 m명이다.

따라서 (t * m) 번 진행한다면, 그 안에 어떤 인원이든 t개의 숫자를 미리 구할 수 있을 것이다.

 

toString(n)을 이용해서 손쉽게 n진수로 바꿔줄 수 있다.

따라서 자기 차례만 뽑아서 결과값에 더하면서 결과값을 대문자로 바꿔준후 return 해주면 된다.