문제
https://school.programmers.co.kr/learn/courses/30/lessons/17687
풀이
튜브가 말해야할 숫자를 구해서 한문자열로 합쳐서 리턴을 한다.
- 먼저 튜브가 말해야할 숫자를 담는 배열(answer)을 선언한다.
- 그리고 n진수로 바꾼 숫자 하나하나를 담을 배열(tmp)에 하나 선언해준다.
- 그 다음 차례로 지금 몇번째 사람이 말한 차례인지 나타내는 변수(i)와 n진수로 바꿀 숫자 변수(num)를 초기화해준다.
- 튜브가 말해야할 숫자 t개를 구할 때까지 반복문을 돌려준다.
- 만약 tmp의 길이가 0이라면 이미 한 n진수의 각 자리수를 모두 말한 것이 된다.
- 그래서 다시 num을 n진수를 각 자리수로 split한 배열로 tmp를 초기화해주고 num은 1증가시킨다.
- nowNum을 선언해서 현재 n진수의 어디까지 왔는지 체크하는 변수를 선언해준다.
- 그리고 i가 p와 같다면 즉 튜브가 말할 차례라면 선언해둔 nowNum을 answer배열에 푸쉬해준다.
- 차례를 나태는 i는 숫자 한자리수를 체크할 때마다 1씩 증가시켜주고
- i 가 m보다 크면 그러니까 한바퀴 다 돌았으면 i는 다시 1로 만들어 준다.
코드
function solution(n, t, m, p) {
var answer = [];
let tmp = [];
let i = 1;
let num = 0;
while(answer.length !== t) {
if(!tmp.length) {
tmp = num.toString(n).split('');
num++;
}
const nowNum = tmp.shift();
if(i === p) answer.push(nowNum);
i++;
if(i > m) i = 1;
}
return answer.map(v => v.toUpperCase()).join('');
}
'PS(Javascript)' 카테고리의 다른 글
[프로그래머스] Lv2 프렌즈 4블록 (0) | 2023.07.11 |
---|---|
[프로그래머스] Lv2 주차요금 계산 (0) | 2023.07.10 |
[프로그래머스] Lv2 k진수에서 소수 개수 구하기. (0) | 2023.07.09 |
[프로그래머스] Lv2 뉴스 클러스터링 (0) | 2023.07.08 |
[프로그래머스] Lv2 [3차] 압축 (0) | 2023.07.06 |
댓글