🔥문제링크
https://school.programmers.co.kr/learn/courses/30/lessons/17687
🔥풀이
일단 카운팅 하는 숫자는 number라는 변수로 잡고 while문을 한바퀴 돌면 1씩 증가하도록 설정하였다. 그리고 다음 사람으로 넘어갈 때 마다 turn을 1씩 증가하도록 설정하였다. 여기서 말하는 턴은 차례를 의미하며 한사람이 어떤 수를 한번 부르고 다음사람으로 넘어갈때 turn은 1씩 증가한다.
일단 n진법으로 모든 수를 변환해야되므로 toString(n) 이라는 메서드를 이용하여 이를 n진법 문자열로 변환한다음 이 문자를 반복문을 돌리면서 각 자리 문자를 순회하면서 turn을 증가시킨다. 그러면서 튜브의 차례가 왔을때 answer에 해당 문자를 추가하는 방법으로 answer을 구할 수 있다.
그리고 turn > p+(t-1)*m 이면 더이상 진행을 하지 않아도 되므로 반복문을 종료시키면 된다. 그리고 주의 해야 할 점은 튜브가 맨 마지막 순서일 때를 (m===p && turn &&m ===0) 놓치지 않는 것이다.
function solution(n, t, m, p) {
var answer = '';
let number = 0
let turn = 0
let isStopPoint = false
while(1){
let converted = number.toString(n)
for(let i=0; i<=converted.length-1; ++i){
++turn
if(turn>p+(t-1)*m){
isStopPoint = true
break;
}
if(m===p && turn%m===0){
if(turn%m===0){
answer+=converted[i].toUpperCase()
}
}else{
if(turn%m===p){
answer+=converted[i].toUpperCase()
}
}
}
if(isStopPoint){
break;
}
++number
}
return answer;
}
'알고리즘' 카테고리의 다른 글
프로그래머스[JS] > 무인도 여행 (0) | 2024.08.11 |
---|---|
프로그래머스[JS] > 수식 최대화 (0) | 2024.08.10 |
프로그래머스[JS] > 정수 삼각형 (0) | 2024.08.04 |
프로그래머스[JS] > 겹치는 선분의 길이 (0) | 2024.07.20 |
프로그래머스[JS] > 쿼드압축 후 개수 세기 (0) | 2024.07.15 |