코딩 테스트/프로그래머스(LV2)

[프로그래머스] [3차] n진수 게임 (LV2 - JavaScript)

dev-hpk 2024. 11. 28. 00:16
 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

1. 문제

 

입력 형식

입출력 예

n t m p result
2 4 2 1 "0111"
16 16 2 1 "02468ACE11111111"
16 16 2 2 "13579BDF01234567"

 

2. 정답 풀이

풀이 전략

  • toString 메서드의 radix를 사용
function solution(n, t, m, p) {
    let str = ''; // n진 숫자
    // t * m : 총 인원의 수 만큼 n진 숫자 str에 추가
    for (let i=0; i<t*m; i++) {
        str += i.toString(n);
    }
    // str: n진수로 변환해 t*m 보다 길어져, slice로 t*m까지만 슬라이싱
    // reduce 메서드로 순회하며 p(튜브 순서)에 해당하는 문자만 추가해 리턴
    const answer = str.toUpperCase().slice(0,t*m).split('').reduce((acc, cur, idx) => {
        if (idx % m === p-1) return acc + cur;
        else return acc;
    }, '')
    
    return answer;
}

 

 

 
최근에 풀었던 문제에서 비트연산으로 2진수를 구한 적이 있다. 그때 생각에 비트 연산을 할까 하다가 toString 메서드가 생각나서 풀어봤는데, 시간 복잡도도 좋고 결과가 만족스럽다😄😄