프로그래머스: N진수 게임

Song-Minhyung·2022년 7월 14일
0

Problem Solving

목록 보기
18/50
post-thumbnail

문제

https://school.programmers.co.kr/learn/courses/30/lessons/17687
숫자를 한개씩 끊어서 자기 차례에 말해야하는 숫자를 말해야 하는 게임이다.
예를 들어 10진수로 게임을 하면 이렇게 말해야 한다.

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3

만약 2진수라면 이렇다.

0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1

이 때 자기 순서에 말해야 하는 숫자를 출력해주는 프로그램을 만들면 된다.

입력: [n, t, m, p]

  • n: 진법의 종류
    • 2 이상 16 이하의 숫자
  • t: 미리 구할 숫자의 개수
    • 0 초과 1,000 이하의 숫자
  • m: 게임에 참가하는 인원
    • 2 이상 100 이하의 숫자
  • p: 내가 말하는 순서
    • 1 이상 m 이하의 숫자

출력: 내 차례에 말해야하는 숫자

접근

이번 문제는 간단했다.

  1. 해당 진수의 숫자들을 미리 구해둔다.
    1.1. 만약 10명의 참가인원, 2번째 순서라면 2, 12, 22, 32번째 단어를 고른다.
    그렇기때문에 m * t만큼 미리 숫자를 구해놔야한다.
  2. 차례에 해당하는 숫자들을 더해준다.

이렇게 보니 정말 정마알 더 간단하다.

코드

function solution(n, t, m, p) {
    let result = '';
    let nums = '';

    for (let i = 0; i < m * t; i++) {
        nums += i.toString(n);
    }
    for (let i = p-1; i < m * t; i += m){
        result += nums[i];
    }
    return result.toUpperCase();
}

소요시간

15분

for문의 범위를 설정하느라 시간이 조금 걸렸다.
그래서 노트에 시뮬레이션을 해보니 그 답은 금방 찾을 수 있었다.

profile
기록하는 블로그

0개의 댓글