[프로그래머스] Lv2. [3차] n진수 게임 - JavaScript

이상돈·2023년 5월 2일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 2

출처 : 프로그래머스 - [3차] n진수 게임

문제

제한사항

📌 내가 생각한 풀이

처음 생각했을 땐, 가장 마지막 숫자까지 n진법으로 변환하여, 튜브가 해당하는 인덱스의 숫자만 뽑아서, 주면 된다고 생각했다. 하지만, 곰곰히 다시 생각해보니, 숫자가 크기 때문에 시간복잡도 면에서 초과가 날 것 같았다. 따라서 n진법으로 변환하였을때, 갈 수 있는 차례의 숫자를 넉넉하게 잡아주고, 변환과 동시에 해당하는 숫자를 넘겨주면서 풀었다.
// 숫자 다 뽑고, 해당하는 숫자 주면, 시간초과
// 해당하는 숫자만 배열에 넣고, join으로 리턴하자.
// 최대 숫자 length는? 16진법이 최대다, 
function solution(n, t, m, p) {
    var answer = '';
    let numArr = [];
    let count = 0;
  	// 나머지를 이용하기 위해서, -1을 해 주었다. 인덱스 = 차례-1이기 때문이다. 
    p-=1;
    for(var i = 0; i<=t*m; i++){
        let parseNum = i.toString(n).split('');
        
        for(var k =0; k<parseNum.length; k++){
            if(numArr.length === t){
                break;
            }
            if(count % m == p){
                numArr.push(parseNum[k].toUpperCase());
            }
            count++;
         
        }
    }
    return numArr.join('');
}

📌 느낀점

문제가 복잡하다고 느꼈지만, 천천히 주어진 조건대로만 풀면 금방 해결될 문제였다. 제한사항을 보고 시간복잡도면에서 오래걸릴지 판단하여, 완전탐색을 사용할지, 그 외의 알고리즘을 사용할지 고민하여 적용해보자!

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글