알고리즘/Level 2

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

Gushers 2023. 3. 16. 17:18

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

[프로그래머스

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

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

접근 방법

해당 문제는 특정 조건까지 계속해서 반복하며 주어진 조건에 맞을 때만 문자열에 추가해주면 되는 문제이다.

  • 0부터 증가하는 수를 n진수로 바꿔준다.
  • 바꿔준 수의 길이가 2글자 이상이라면 내 순서에 한글자만 문자열에 추가해주고 나머지 숫자는 나머지 사람들이 처리한다.

이 두가지만 생각하고 문제를 한단계씩 풀면 비교적 쉽게 풀 수 있다.

풀이

function solution(n, t, m, p) {
  let answer = "";  
  let num = 0;
  let count = 0;

  while (true) {
    let changeNum = num.toString(n);
    for (let i = 0; i < changeNum.length; i++) {
      if (count % m === p - 1) {
        answer += changeNum[i].toUpperCase();
        if (answer.length === t) return answer;
      }
      count++;
    } 
    num++;
  }
}

().toString(n)을 활용하여 수를 n진법으로 바꾼 후에 해당 문자의 길이만큼 for문을 돌기 시작하면 된다.
그리고 내 순서에 맞을 때만 해당 값을 문자열에 추가해주면 된다.
count는 현재 어떤 사람의 차례인지를 나타내는 변수이다. 이는 0부터 시작하여 계속 증가하는데 이 값을 총 인원으로 나눈 나머지에 따라 현재 순서를 알 수 있다.