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 이하의 숫자
출력: 내 차례에 말해야하는 숫자
이번 문제는 간단했다.
이렇게 보니 정말 정마알 더 간단하다.
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문의 범위를 설정하느라 시간이 조금 걸렸다.
그래서 노트에 시뮬레이션을 해보니 그 답은 금방 찾을 수 있었다.