문제풀이/완전탐색

[Javascript/자바스크립트] 프로그래머스 [3차] n진수 게임

딜레이레이 2025. 4. 30. 13:04

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

 

코드

function solution(n, t, m, p) {
    let answer = '';
    let sequence = ""
    let num = 0;
    while(sequence.length < t*m){
        const convertedNum = num.toString(n).toUpperCase();
        sequence += convertedNum;
        num++;
    }

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

1. `sequence`라는 문자열에 0부터 n진법으로 변환한 문자열을 쭉 이어붙인다. 이 동작은 `sequence`의 길이가 `t*m` 이상이 될 때까지 반복한다.

2. `sequence`를 m개의 원소를 가진 덩어리들로 나눴을 때, p-1번째(제로 인덱스 기준)에 있는 원소들만 뽑아서 `answer`에 문자열로 저장하면 된다. 그걸 코드로 구현하면 11~14번째 줄과 같다.


여기서 5~9에 있는 작업은 배열의 메서드인 `reduce`로 변경할 수도 있다. 다만 이렇게 하려면 num이 몇까지 갈 지 미리 설정해두어야 하는데, 정확한 값을 알기는 어려워서 그냥 큰 값으로 넣어두고 `reduce`를 사용한 풀이도 있었다. 그렇지만 이건 메모리 측면에서 너무 비효율적이라고 생각해서 이렇게 하지는 않았다.